最大樹定義:乙個樹,其中每個節點的值都大於其子樹中的任何其他值。
先把樹轉換成list,加上val,再把新list轉換成樹:
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
insertintomaxtree
(self, root:
'treenode'
, val:
'int')-
>
'treenode'
: node = root
nums = self.node2num(node)
+[val]
return self.num2tree(nums)
defnode2num
(self, node):if
not node:
return
return self.node2num(node.left)
+[node.val]
+ self.node2num(node.right)
defnum2tree
(self, nums):if
not nums:
return
max_num =
max(nums)
max_num_loc = nums.index(max_num)
root = treenode(max_num)
root.left = self.num2tree(nums[
:max_num_loc]
) root.right = self.num2tree(nums[max_num_loc+1:
])return root
沒那麼麻煩,看值的大小找插入位置即可:# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
insertintomaxtree
(self, root: treenode, val:
int)
-> treenode:
ifnot root:
return treenode(val)
if root.val < val:
# val加在最後,所以root為val左子樹
res = treenode(val)
res.left = root
return res
else
:# val在右子樹上
root.right = self.insertintomaxtree(root.right, val)
return root
998 最大二叉樹 II
題目描述 最大樹定義 乙個樹,其中每個節點的值都大於其子樹中的任何其他值。給出最大樹的根節點 root。就像之前的問題那樣,給定的樹是從表 a root construct a 遞迴地使用下述 construct a 例程構造的 如果 a 為空,返回 null 否則,令 a i 作為 a 的最大元素...
998 最大二叉樹 II
最大樹定義 乙個樹,其中每個節點的值都大於其子樹中的任何其他值。給出最大樹的根節點 root。就像之前的問題那樣,給定的樹是從表 a root construct a 遞迴地使用下述 construct a 例程構造的 如果 a 為空,返回 null 否則,令 a i 作為 a 的最大元素。建立乙個...
LeetCode 最大二叉樹
q 給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。示例 輸入 3,2,1,6,0,5 輸...