public void TestConcurrencyWrite() { BinaryTree tree = new BinaryTree (); int multiplier = 1; List<Thread> threads = new List<Thread> (); for (int j = 0; j < 30; j++) { threads.Add ( new Thread (() => { for (int i = 0; i < 20; i++) { tree.Insert(i+(10^multiplier)); } for (int i = 0; i < 20; i++) { Assert.True (tree.Contains (i+(10^multiplier))); } })); multiplier++; } Parallel.ForEach (threads, (thread) => { thread.Start (); thread.Join (); }); }
public static void Main(string[] args) { Dictionary<DateTime, int> dic = new Dictionary<DateTime, int> (); BinaryTree<DateTime, int> tree = new BinaryTree<DateTime, int> (); DateTime time = Convert.ToDateTime ("2012/7/30 4:30:00"); for (int i = 0; i < 60000; i++) { if (!dic.ContainsKey(time)) { dic.Add (time, i); tree.Add (time, i); } time = time.AddSeconds (i); } var min = Convert.ToDateTime ("2012/7/30 4:30:00"); var max = Convert.ToDateTime ("2012/7/30 4:40:00"); var watch = Stopwatch.StartNew (); var result1 = dic.Keys.Where (i => i >= min && i <= max).Select (i => dic [i]).ToList (); watch.Stop (); Console.WriteLine("字典查找耗费时间:{0}ms,获取总数:{1}", watch.ElapsedMilliseconds, result1.Count); watch = Stopwatch.StartNew (); var result2 = tree.SearchRange(min, max); watch.Stop (); Console.WriteLine("二叉树耗费时间:{0}ms,获取总数:{1}", watch.ElapsedMilliseconds, result2.Count); }
public void TestConcurrencyRead() { BinaryTree tree = new BinaryTree (); for (int i = 0; i < 20; i++) { tree.Insert (i); } List<Thread> threads = new List<Thread> (); for (int j = 0; j < 30; j++) { threads.Add ( new Thread (() => { for (int i = 0; i < 20; i++) { Assert.True (tree.Contains (i)); } for (int i = 20; i < 25; i++) { Assert.False (tree.Contains (i)); } })); } Parallel.ForEach (threads, (thread) => { thread.Start (); thread.Join (); }); }
public void BasicTreeTest() { BinaryTree tree = new BinaryTree (); for (int i = 0; i < 20; i++) { tree.Insert (i); } for (int i = 0; i < 20; i++) { Assert.True (tree.Contains (i)); } for (int i = 20; i < 25; i++) { Assert.False (tree.Contains (i)); } }
public static void Main(string[] args) { var tree = new BinaryTree(); tree.Insert(10); tree.Insert(9); tree.Insert(12); tree.Insert(1); tree.Insert(4); tree.Insert(2); Display(tree.Head); Console.WriteLine(); tree.Remove(10); Display(tree.Head); Console.WriteLine(); tree.Insert(3); tree.Insert(7); tree.Insert(11); tree.Insert(6); tree.Insert(15); Display(tree.Head); Console.WriteLine(); tree.Insert(10); tree.Remove(15); Display(tree.Head); Console.WriteLine(); tree.Remove(1); Display(tree.Head); Console.WriteLine(); tree.Remove(4); Display(tree.Head); Console.WriteLine(); tree.Insert(18); tree.Insert(19); tree.Insert(21); tree.Insert(20); tree.Insert(22); tree.Balanse(); var contains4 = tree.Contains(7); Console.WriteLine(tree.Count); }
public void Init() { tree = new BinaryTree(); }
static void Main(string[] args) { BinaryTree binaryTree = new BinaryTree(); int[] numbersToAdd = new[] { 6, 4, 3, 2, 10, 1, 9 }; foreach (int number in numbersToAdd) { binaryTree.Add(number); } Console.WriteLine("Дерево:"); binaryTree.PrintTree(); Console.WriteLine("Возрастание:"); foreach (int number in binaryTree.AscendingSequence()) { Console.Write($"{number} "); } Console.WriteLine(); Console.WriteLine("Убывание:"); foreach (int number in binaryTree.DescendingSequence()) { Console.Write($"{number} "); } Console.WriteLine(); int k = 3; Console.WriteLine($"k-ый минимальный элемент: {binaryTree.FindKthMinimalElement(k).Value} (k = {k})"); BinaryTree binaryTree1 = new BinaryTree(); int[] numbersToAdd1 = new[] { 1, 2, 3, 4, 5, 6, 7 }; foreach (int number in numbersToAdd1) { binaryTree1.Add(number); } BinaryTree binaryTree2 = new BinaryTree(); int[] numbersToAdd2 = new[] { 9, 8, 14, 11, 15, 20, 21 }; foreach (int number in numbersToAdd2) { binaryTree2.Add(number); } BinaryTree binaryTree3 = new BinaryTree(); int[] numbersToAdd3 = new[] { 6, 7, 5, 3, 1, 4 }; foreach (int number in numbersToAdd3) { binaryTree3.Add(number); } binaryTree1.BalanceTree(); binaryTree2.BalanceTree(); binaryTree3.BalanceTree(); Console.WriteLine("Сбалансированное дерево 1:"); binaryTree1.PrintTree(); Console.WriteLine("Сбалансированное дерево 2:"); binaryTree2.PrintTree(); Console.WriteLine("Сбалансированное дерево 3:"); binaryTree3.PrintTree(); }
static void Main(string[] args) { BinaryTree binaryTree = new BinaryTree(); int[] intArray = new int[15]; for (var i = 0; i < 15; i++) { Random random = new Random(); int rand = 0; rand = random.Next(1, 50); while (intArray.Contains(rand)) { rand = random.Next(1, 50); if (!(intArray.Contains(rand))) { break; } } binaryTree.Add(rand); intArray[i] = rand; } StringBuilder initialArraySB = new StringBuilder("Initial Insert: "); for (int i = 0; i < intArray.Length; i++) { initialArraySB.Append(intArray[i].ToString() + " "); } initialArraySB.Length--; Console.WriteLine(initialArraySB); int depth = binaryTree.GetMaxDepth(); Console.WriteLine("Depth: " + depth); Console.WriteLine("PreOrder:"); binaryTree.PrintPreOrder(binaryTree.Root); Console.WriteLine(); Console.WriteLine("InOrder:"); binaryTree.PrintInOrder(binaryTree.Root); Console.WriteLine(); Console.WriteLine("PostOrder:"); binaryTree.PrintPostOrder(binaryTree.Root); Console.WriteLine(); Console.WriteLine("BFS:"); binaryTree.PrintBFS(binaryTree.Root); Console.WriteLine(); Console.WriteLine("DFS:"); binaryTree.PrintDFS(binaryTree.Root); Console.WriteLine(); Console.ReadLine(); }
public BinaryTree(T value, BinaryTree <T> leftNode = null, BinaryTree <T> rightNode = null) { this.Value = value; this.LeftNode = leftNode; this.RightNode = rightNode; }
public static void Render(BinaryTree tree) { Console.Clear(); RenderNode(tree.Root); }
static void Main(string[] args) { BinaryTree b = new BinaryTree(); b.insert(18); b.insert(10); b.insert(28); b.insert(9); b.insert(7); b.insert(19); b.insert(22); b.insert(13); b.insert(34); b.insert(30); b.insert(55); while (true) { Console.WriteLine("\nMenu"); Console.WriteLine("1. Iplement insert operation"); Console.WriteLine("2. Perform inorder traversal"); Console.WriteLine("3. Perform preorder traversal"); Console.WriteLine("4. Perform postorder traversal"); Console.WriteLine("5. Iplement delete operation"); Console.WriteLine("6. Exit"); Console.WriteLine("\nEnter your choice (1-6): "); char ch = Convert.ToChar(Console.ReadLine()); Console.WriteLine(); switch (ch) { case '1': { Console.Write("Enter a word: "); int word = Convert.ToInt32(Console.ReadLine()); b.insert(word); } break; case '2': { b.inorder(b.ROOT); } break; case '3': { b.preorder(b.ROOT); } break; case '4': { b.postorder(b.ROOT); } break; case '5': { Console.Write("Enter a word: "); int word = Convert.ToInt32(Console.ReadLine()); b.remove(word, b.ROOT); } break; case '6': return; default: { Console.WriteLine("Invalid option"); break; } } } //b.insert(18); //b.insert(10); //b.insert(28); //b.insert(9); //b.insert(7); //b.insert(19); //b.insert(22); //b.insert(13); //b.insert(34); //b.insert(30); //b.insert(55); //b.remove(28,b.ROOT); Console.ReadLine(); }
public BinaryTree(T val, BinaryTree <T> parent) { this.value = val; this.parent = parent; }