劍指offer 重建二叉樹(樹 dfs 陣列)

2021-10-09 06:21:56 字數 995 閱讀 8616

題目描述:

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

1.dfs深度優先遍歷

/**

* definition for binary tree

* struct treenode

* };

*/class

solution

treenode*

dfs(vector<

int> pre,vector<

int> vin,

int pl,

int pr,

int vl,

int vr)

};

2.遞迴

/**

* definition for binary tree

* struct treenode

* };

*/class

solution

}//對於中序遍歷,根節點左邊的節點位於二叉樹的左邊,根節點右邊的節點位於二叉樹的右邊

// 左子樹

for(

int i =

0; i < gen; i++

)// 右子樹

for(

int i = gen +

1; i < vinlen; i++

)//遞迴,執行上述步驟,區分子樹的左、右子子樹,直到葉節點

head-

>left =

reconstructbinarytree

(pre_left, vin_left)

; head-

>right =

reconstructbinarytree

(pre_right, vin_right)

;return head;}}

;

劍指offer 樹 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析 不含重複數字。前序遍歷序列第乙個值是根節點,找到其在中序遍歷中的位置,那此位置前面的是左子樹節點,右邊的是右子樹節點...

劍指offer 重建二叉樹

重建二叉樹2.cpp 定義控制台應用程式的入口點。題目描述 輸入乙個二叉樹的前序遍歷和中序遍歷,輸出這顆二叉樹 思路 前序遍歷的第乙個節點一定是這個二叉樹的根節點,這個節點將二叉樹分為左右子樹兩個部分,然後進行遞迴求解 include stdafx.h include vector using na...

《劍指offer》重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,則重建二叉樹並返回。輸入乙個樹的前序和中序,例如輸入前序遍歷序列和中序遍歷序列 根據輸入的前序和中序,重建乙個該二叉樹,並返回該樹的根節點。definition for binary...