889 根據前序和後序遍歷構造二叉樹

2021-10-09 10:42:46 字數 1240 閱讀 4923

題目描述:

返回與給定的前序和後序遍歷匹配的任何二叉樹。

pre 和 post 遍歷中的值是不同的正整數。

示例:

輸入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]

輸出:[1,2,3,4,5,6,7]

1 <= pre.length == post.length <= 30

pre 和 post 都是 1, 2, …, pre.length 的排列

每個輸入保證至少有乙個答案。如果有多個答案,可以返回其中乙個。

方法1:

主要思路:

(1)使用前序遍歷中的首個元素的後面乙個元素,將後續遍歷中的對應範圍進行分割;

(2)遞迴的在分割後的範圍內,重新建立新的樹;

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

treenode* root=

newtreenode

(pre[pre_s]);

//當前結點作為根節點建立樹

if(pre_s==pre_e)

//找出新的左右子樹對應的範圍

int index=post_s;

while

(pre[pre_s+1]

!=post[index]

)//建立左右子樹

root-

>left=

helper

(pre,pre_s+

1,pre_s+

1+index-post_s,post,post_s,index)

; root-

>right=

helper

(pre,pre_s+

1+index-post_s+

1,pre_e,post,index+

1,post_e-1)

;return root;

} treenode*

constructfromprepost

(vector<

int>

& pre, vector<

int>

& post)

};

889 根據前序和後序遍歷構造二叉樹

返回與給定的前序和後序遍歷匹配的任何二叉樹。pre 和 post 遍歷中的值是不同的正整數。示例 輸入 pre 1,2,4,5,3,6,7 post 4,5,2,6,7,3,1 輸出 1,2,3,4,5,6,7 1 pre.length post.length 30 pre 和 post 都是 1,...

210 根據前序和後序遍歷構造二叉樹

題目描述 返回與給定的前序和後序遍歷匹配的任何二叉樹。pre 和 post 遍歷中的值是不同的正整數。示例 輸入 pre 1,2,4,5,3,6,7 post 4,5,2,6,7,3,1 輸出 1,2,3,4,5,6,7 1 pre.length post.length 30 pre 和 post ...

A1138 根據前序 中序生成後序

參考了部落格上碼量不到50行的 完成了這題的ac重構。感覺真的基礎很重要,這題其實是很簡單的一道樹的前中後序的題目。但是我之前練習的時候,都是用的自己總結的騷套路,雖然理解起來很直觀,但是用了動態陣列 vector 時間複雜度比較大。這題問題規模n 5e4,時間控制600ms,雖然已經ac了,但是執...