LeetCode力扣 95 不同的二叉樹查詢

2021-10-23 13:17:06 字數 949 閱讀 1606

# definition for a binary tree node.

class treenode:

def __init__(self, val=0, left=none, right=none):

self.val = val

self.left = left

self.right = right

class solution:

def generatetrees(self, n: int) -> list[treenode]:

if not n:

return

return self.new_trees(1, n)

def new_trees(self, start, end):

if start > end:

return [none]

all_trees =

# 針對(start,end)中的每乙個i進行切分,也就是求g(i),判斷左右是否有節點,通過start和end比較

for i in range(start, end + 1):

# 左子樹

left_trees = self.new_trees(start, i - 1)

# 右子樹

right_trees = self.new_trees(i + 1, end)

for left in left_trees:

for right in right_trees:

tree = treenode(i)

tree.left = left

tree.right = right

# print(all_trees)

# 注:每次遞迴進入的子樹的all_trees都是不一樣的。可以通過列印print()檢視控制台的輸出,這樣更容易理解具體的思路。

return all_trees

力扣95不同的二叉搜尋樹

自上向下遞迴下去找到所有的樹比較容易,難得是如何如何從下往上返回來把每一棵樹都列印出來,class solution return getans 1,n private vectorgetans int start,int end if start end for int i start i end...

(力扣) 95 不同的二叉搜尋樹 II

這道題的目的是求出由1到n為節點的所有二叉搜尋樹。首先需要知道二叉搜尋樹的定義。在二叉搜尋樹中,任意取一節點,如果存在左節點,那麼根節點值一定會大於左節點值,同理,如果存在右節點,那麼根結點一定會小於右節點值。通常在涉及構建樹的問題上,可以考慮遞迴,這樣便可以省去重複的 並且這道題可以採用分而治之的...

力扣95 不同的二叉搜尋樹 II

給定乙個整數 n,生成所有由 1 n 為節點所組成的 二叉搜尋樹 示例 輸入 3 輸出 1,null,3,2 3,2,null,1 3,1,null,null,2 2,1,3 1,null,2,null,3 解釋 以上的輸出對應以下 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3...