給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下:
二叉樹的根是陣列中的最大元素。
左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。
右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。
通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。
示例 :
輸入:[3,2,1,6,0,5]
輸出:返回下面這棵樹的根節點:
6/ \
3 5
\ /
2 0
\1
簡單遞迴
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
constructmaximumbinarytree
(self, nums: list[
int])-
> treenode:
ifnot nums:
return
max_val =
max(nums)
max_index = nums.index(max_val)
root = treenode(max_val)
root.left = self.constructmaximumbinarytree(nums[
:max_index]
) root.right = self.constructmaximumbinarytree(nums[max_index +1:
])return root
leetcode 654 最大二叉樹
給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。example 1 輸入 3,2,1,6,...
leetcode 654最大二叉樹
題目 給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。example 1 輸入 3,2,1...
leetcode654 最大二叉樹
一.參考題解.遍歷一次陣列並隨時將新的節點插入樹的相應位置,如果當前遍歷的值大於樹的根節點,則將當前節點作為新的根節點,將原來的樹當作新根節點的左子樹,否則的話,將其遞迴的交給根節點的右子樹處理 因為從左向右遍歷,新的節點一定在右邊 二.參考第二個大神的遞迴.第二種遞迴.class solution...