統計和生成所有不同的二叉樹

2021-09-11 19:56:37 字數 935 閱讀 3150

【題目】給定乙個整數n,如果n<1,代表空樹結構,否則代表中序遍歷的結果為.請返回可能的二叉樹結構有多少。

public

class

numtrees

int[

] dp =

newint

[n +1]

; dp[0]

=1;for

(int i =

1; i <= n; i++)}

return dp[n];}

}

【高階】:n的含義不變,假設可能的二叉樹結構有m種,請返回m個二叉樹的頭結點,每一棵二叉樹代表一種可能的結構。

public

static

class

node

}public

static list

generatetrees

(int n)

public

static list

generate

(int start,

int end)

node head = null;

for(

int i = start; i < end +

1; i++)}

}return res;

}private

static node clonetree

(node head)

node res =

newnode

(head.value)

; res.left =

clonetree

(head.left)

; res.right =

clonetree

(head.right)

;return res;

}

統計和生成所有不同的二叉樹

include tree.h using namespace std 實際上記錄下從1到n的每個的可能的二叉樹的個數 num i 表示有i個節點時,有多少可能的二叉樹 num i 1 可以由num 0 num i 的記錄計算得到 具體的計算方式是認為每個節點都可以做頭結點,當節點j做頭節點時 可能的...

生成二叉樹

問題描述 由中序遍歷和後續遍歷生成二叉樹 解題思路 方法一 時間o n2 空間 o 1 public treenode buildtree int inorder,int postorder public treenode buildnode int inorder,int ib,int ie,in...

二叉樹的生成

from pdd 給定乙個list,比如 7,8 2,3 2,4 4,5 4,6 3,7 其中integer 0 表示父節點,integer 1 表示子節點 排在前面的為左子節點,排在後面的為有子節點 題目要求 根據這個list生成一棵二叉樹,並按照前序遍歷輸出 根據如上描述,生成的二叉樹應該長這樣...