題目描述:
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
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...