예제 #1
0
        public void bigTreeHeightTest()
        {
            //        r
            //      /   \
            //     a     b
            //    /  \
            //   c    d
            //  /  \ 
            // e    f
            // | \
            // g  h

            Tree root = new TreeNode()                          // r
            {
                left = new TreeNode()                           // a
                {
                    left = new TreeNode()                       // c
                    {
                        left = new TreeNode()                   // e
                        {
                            left  = new TreeLeaf(),             // g
                            right = new TreeLeaf()
                        },                                      // h
                        right = new TreeLeaf()
                    },                                          // f
                    right = new TreeLeaf()
                },                                              // d
                right = new TreeLeaf()                          // b
            };
            HeightVisitor visitor = new HeightVisitor();

            root.Accept(visitor);
            Assert.AreEqual(4, visitor.height);
        }
예제 #2
0
        public void oneNodeHeightTest()
        {
            Tree          root    = new TreeLeaf();
            HeightVisitor visitor = new HeightVisitor();

            root.Accept(visitor);
            Assert.AreEqual(0, visitor.height);
        }
예제 #3
0
        public void TestHeightVisitor()
        {
            var tree = new Tree();

            tree.Add(10);
            tree.Add(1);
            tree.Add(20);
            tree.Add(23);
            tree.Add(21);

            var visitor = new HeightVisitor();

            tree.Accept(visitor);

            Assert.AreEqual(3, visitor.TreeHeight);
        }
예제 #4
0
        public void heightTest()
        {
            //      r
            //    l    r
            //  ll lr
            Tree root = new TreeNode()
            {
                left = new TreeNode()
                {
                    left  = new TreeLeaf(),
                    right = new TreeLeaf()
                },
                right = new TreeLeaf()
            };

            HeightVisitor visitor = new HeightVisitor();

            root.Accept(visitor);

            Assert.AreEqual(2, visitor.height);
        }
예제 #5
0
        public void test()
        {
            //      ____r____
            //   __l__     __r
            //  ll   lr   rl
            Tree root = new TreeNode()
            {
                left = new TreeNode()
                {
                    left  = new TreeLeaf(),
                    right = new TreeLeaf()
                },
                right = new TreeNode()
                {
                    left = new TreeLeaf()
                }
            };

            HeightVisitor visitor = new HeightVisitor();

            visitor.visit(root);
            Assert.AreEqual(2, visitor.height);
        }