Пример #1
0
 public int MinTreeDepth(BinaryTreeNode tree)
 {
     if (tree == null)
     {
         return 0;
     }
     return 1 + Math.Min(MinTreeDepth(tree.Left), MinTreeDepth(tree.Right));
 }
Пример #2
0
        public void SeeIfATreeIsBalancedTree()
        {
            BinaryTreeNode tree1 = new BinaryTreeNode()
            {
                Left = new BinaryTreeNode() { Left = new BinaryTreeNode() },
            };
            Assert.IsFalse(IsBalancedTree(tree1));

            BinaryTreeNode tree2 = new BinaryTreeNode()
            {
                Left = new BinaryTreeNode() { Left = new BinaryTreeNode() { Left = new BinaryTreeNode() } },
                Right = new BinaryTreeNode(),
            };
            Assert.IsFalse(IsBalancedTree(tree2));

            BinaryTreeNode tree3 = new BinaryTreeNode()
            {
                Left = new BinaryTreeNode() { Left = new BinaryTreeNode() },
                Right = new BinaryTreeNode() { Left = new BinaryTreeNode() },
            };
            Assert.IsTrue(IsBalancedTree(tree3));
        }
Пример #3
0
 public void TraverseTreeInDepthOrder()
 {
     BinaryTreeNode tree3 = new BinaryTreeNode(1)
     {
         Left = new BinaryTreeNode(2) { Left = new BinaryTreeNode(4), Right = new BinaryTreeNode(5) },
         Right = new BinaryTreeNode(3) { Left = new BinaryTreeNode(6), Right = new BinaryTreeNode(7) },
     };
     // create a queue
     Queue<BinaryTreeNode> queue = new Queue<BinaryTreeNode>();
     queue.Enqueue(tree3);
     while (queue.Count > 0)
     {
         var t = queue.Dequeue();
         Console.WriteLine(t.Value);
         if (t.Left != null)
         {
             queue.Enqueue(t.Left);
         }
         if (t.Right != null)
         {
             queue.Enqueue(t.Right);
         }
     }
 }
Пример #4
0
 public bool IsBalancedTree(BinaryTreeNode tree)
 {
     return MaxTreeDepth(tree) - MinTreeDepth(tree) <= 1;
 }