Пример #1
0
        private static TreeNode GetTree(int val, TreeNode temp1, TreeNode temp2)
        {
            TreeNode root = new LeetCode.TreeNode(val);

            root.left  = temp1;
            root.right = temp2;
            return(root);
        }
Пример #2
0
 public TreeProblems()
 {
     LeetCode.TreeNode node = root;
     node.left  = new LeetCode.TreeNode(2);
     node.right = new LeetCode.TreeNode(2);
     node       = root.right;
     node.left  = new LeetCode.TreeNode(4);
     node.right = new LeetCode.TreeNode(3);
     node       = root.left;
     node.left  = new LeetCode.TreeNode(4);
     node.right = new LeetCode.TreeNode(3);
     node       = root.left.right;
     node.left  = new LeetCode.TreeNode(8);
     node.right = new LeetCode.TreeNode(9);
     node       = root.right.right;
     node.left  = new LeetCode.TreeNode(8);
     node.right = new LeetCode.TreeNode(9);
 }
Пример #3
0
 /// <summary>
 /// 给定一棵树,原地展开它,使用右子树作为链表;先序遍历展开
 /// </summary>
 /// <param name="root"></param>
 public void Flatten(TreeNode root)
 {
     while (root != null)
     {
         if (root.left != null)
         {
             TreeNode leftTmp   = root.left;
             TreeNode leftRight = leftTmp;
             while (leftRight.right != null)
             {
                 leftRight = leftRight.right;
             }
             root.left       = null;
             leftRight.right = root.right;
             root.right      = leftTmp;
         }
         root = root.right;
     }
 }
Пример #4
0
        private TreeNode ConstructMaximumBinaryTree(int[] nums, int lo, int hi)
        {
            if (lo > hi)
            {
                return(null);
            }

            int maxIndex = lo;

            for (int i = lo + 1; i <= hi; i++)
            {
                if (nums[i] > nums[maxIndex])
                {
                    maxIndex = i;
                }
            }

            TreeNode root = new LeetCode.TreeNode(nums[maxIndex]);

            root.left  = ConstructMaximumBinaryTree(nums, lo, maxIndex - 1);
            root.right = ConstructMaximumBinaryTree(nums, maxIndex + 1, hi);

            return(root);
        }