LeetCode——最大二叉樹
阿新 • • 發佈:2020-08-01
給定一個不含重複元素的整數陣列。一個以此陣列構建的最大二叉樹定義如下:
- 二叉樹的根是陣列中的最大元素。
- 左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。
- 右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。
通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。
A:樹的遞迴
public TreeNode constructMaximumBinaryTree(int[] nums) { if (nums.length == 0) return null; int max = nums[0]; int maxIndex = 0; for (int i = 1; i < nums.length; i++) { if (nums[i] > max) { max = nums[i]; maxIndex = i; } } TreeNode node = new TreeNode(max); int[] left = Arrays.copyOfRange(nums, 0, maxIndex); node.left = constructMaximumBinaryTree(left); int[] right = Arrays.copyOfRange(nums, maxIndex + 1, nums.length); node.right = constructMaximumBinaryTree(right); return node; }