輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
根據中序遍歷和前序遍歷可以確定二叉樹,具體過程為:
1、根據前序遍歷序列,第乙個元素為根節點;
2、在中序遍歷序列中找到根節點所在的位置,分割出左右兩個子串行,分別為左子樹、右子樹;
3、再利用子樹長度去前序遍歷序列把前序遍歷序列中的左右子樹找出來;
4、對左子樹和右子樹分別遞迴使用同樣的方法繼續分解。
個人認為思路並不難,難點在於想清楚怎麼表示分割後的兩個子串行,動手畫乙個示意圖會清楚一些。
public
class
solution
// pre、in:前序序列、中序序列
// startpre、endpre、startin、endin:前序序列、中序序列的頭索引、尾索引
private treenode reconstructbinarytree
(int
pre,
int startpre,
int endpre,
int[
] in,
int startin,
int endin)
return root;
}}
劍指offer 演算法題練習 part4 重建二叉樹
劍指offer 演算法題練習 part4 重建二叉樹 時間限制 1秒空間限制 32768k 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。definition for ...
4 重建二叉樹(劍指offer)
4.重建二叉樹 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。1 思路 通常樹有如下幾種遍歷方式 前序遍歷 先訪問根結點,再訪問左子結點,最後訪問右子結點。root一般在最前 中...
劍指offer筆記4 重建二叉樹(Python)
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回頭結點。二叉樹節點的定義如下 class treenode def init self,x self.val x self.left no...