leetcode 654 最大二叉樹

2021-09-24 02:34:54 字數 1353 閱讀 6108

給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下:

二叉樹的根是陣列中的最大元素。

左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。

右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。

通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。

example 1:

輸入:[3,2,1,6,0,5]輸入:返回下面這棵樹的根節點:

6/ \

3 5

\ /

2 0

\1

注意:

給定的陣列的大小在 [1, 1000] 之間。

小結:遞迴方式,未能ac

# definition for a binary tree node.

# class treenode(object):

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution(object):

def subconstruct(self, arr, i, j):

if len(arr[i : j + 1]) == 0:

return none

max_num = max(arr[i : j + 1])

max_num_index = self.num_index_map[max_num]

root = treenode(max_num)

root.left = self.subconstruct(arr, i, max_num_index)

root.right = self.subconstruct(arr, max_num_index + 1, j)

return root

def constructmaximumbinarytree(self, nums):

""":type nums: list[int]

:rtype: treenode

"""self.num_index_map = {}

i = 0

for n in nums:

self.num_index_map[n] = i

i += 1

root = self.subconstruct(nums, 0, len(nums) - 1)

return root

leetcode 654最大二叉樹

題目 給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。example 1 輸入 3,2,1...

leetcode654 最大二叉樹

一.參考題解.遍歷一次陣列並隨時將新的節點插入樹的相應位置,如果當前遍歷的值大於樹的根節點,則將當前節點作為新的根節點,將原來的樹當作新根節點的左子樹,否則的話,將其遞迴的交給根節點的右子樹處理 因為從左向右遍歷,新的節點一定在右邊 二.參考第二個大神的遞迴.第二種遞迴.class solution...

LeetCode 654 最大二叉樹

題目描述 給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。輸入 3,2,1,6,0,5 輸...