Exemple #1
0
        public void TestInvent()
        {
            //完整的情况
            var root = new TreeNode(4);

            root.Left        = new TreeNode(2);
            root.Right       = new TreeNode(7);
            root.Left.Left   = new TreeNode(1);
            root.Left.Right  = new TreeNode(3);
            root.Right.Left  = new TreeNode(6);
            root.Right.Right = new TreeNode(9);

            root = InvertBinaryTree.Invent(root);

            Assert.AreEqual(root.Left.Val, 7);
            Assert.AreEqual(root.Right.Val, 2);
            Assert.AreEqual(root.Left.Left.Val, 9);
            Assert.AreEqual(root.Left.Right.Val, 6);
            Assert.AreEqual(root.Right.Left.Val, 3);
            Assert.AreEqual(root.Right.Right.Val, 1);

            //不完整的情况
            root                 = new TreeNode(1);
            root.Left            = new TreeNode(2);
            root.Right           = new TreeNode(3);
            root.Left.Left       = new TreeNode(4);
            root.Left.Right      = new TreeNode(5);
            root.Right.Right     = new TreeNode(6);
            root.Left.Right.Left = new TreeNode(7);


            root = InvertBinaryTree.Invent(root);

            Assert.AreEqual(root.Left.Val, 3);
            Assert.AreEqual(root.Right.Val, 2);
            Assert.AreEqual(root.Left.Left.Val, 6);
            Assert.AreEqual(root.Right.Left.Val, 5);
            Assert.AreEqual(root.Right.Right.Val, 4);
            Assert.AreEqual(root.Right.Left.Right.Val, 7);
        }