leetcode998 最大二叉樹II

2021-09-11 10:24:40 字數 1712 閱讀 7611

最大樹定義:乙個樹,其中每個節點的值都大於其子樹中的任何其他值。

先把樹轉換成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 輸...