6 重建二叉樹

2021-10-02 02:17:02 字數 1182 閱讀 9473

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

二叉樹前序遍歷序列第乙個節點是根節點,中序遍歷根節點左邊的是左子樹,右邊是右子樹。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

return

_buildtree

(preorder, inorder,

0, preorder.

size()

-1,0

, inorder.

size()

-1);

} treenode*

_buildtree

(vector<

int>

& preorder, vector<

int>

& inorder,

int pre_left,

int pre_right,

int in_left,

int in_right)

treenode* root =

newtreenode

(preorder[pre_left]);

int rootidx = in_left;

for(

; rootidx < pre_right;

++rootidx)

}int diff = rootidx - in_left;

root-

>left =

_buildtree

(preorder, inorder, pre_left+

1, pre_left+diff, in_left, rootidx-1)

; root-

>right =

_buildtree

(preorder, inorder, pre_left+diff+

1, pre_right, rootidx+

1, in_right)

;return root;}}

;

時間複雜度:o(n)

空間複雜度:o(n)

6 重建二叉樹 JAVA

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。解題思路 利用遞迴來完成,重點是要利用好前序遍歷和中序遍歷的特點,兩者結合來完成遞迴,public class treenode p...

二叉樹24 重建二叉樹

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 已知一棵樹的先序遍歷的結果陣列和中序遍歷的結果,要求據此重建一棵二叉樹,即重建所有結點並設定結點之間的指標關係,最後返回...

二叉樹 2255 重建二叉樹

總時間限制 1000ms 記憶體限制 65536kb 描述給定一棵二叉樹的前序遍歷和中序遍歷的結果,求其後序遍歷。輸入輸入可能有多組,以eof結束。每組輸入包含兩個字串,分別為樹的前序遍歷和中序遍歷。每個字串中只包含大寫字母且互不重複。輸出對於每組輸入,用一行來輸出它後序遍歷結果。樣例輸入 dbac...