前序遍歷:中—左----右
中序遍歷:左—中----右
後序遍歷:左—右----中
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
// 中間子點
treenode* head_ =
newtreenode
(preorder[preleft]);
int i;
for(
int m = inleft; m <= inright; m++)}
int left_len = i - inleft;
int right_len = inright - i;
head_-
>left =
rebuildtree
(preorder,inorder,preleft+
1,preleft + left_len,inleft,i-1)
; head_-
>right =
rebuildtree
(preorder,inorder,preleft+left_len+
1,preleft+left_len+right_len+
1,i+
1,inright)
;return head_;
} treenode*
buildtree
(vector<
int>
& preorder, vector<
int>
& inorder)
};
執行結果:
Leetcode 重建二叉樹
leetcode 105 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。思路 前序遍歷 根節點 左子樹 右子樹 中序遍歷 左子樹 根節點 右子樹 根據兩個遍歷結果中都不存在重複數字,那麼前序遍歷的第乙個數值為起始點,找出該值在中序遍歷陣...
leetcode 二叉樹重建
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 首先注意到題目中明確指出二叉樹遍歷...
LeetCode 重建二叉樹
原題鏈結 劍指 offer 07.重建二叉樹 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20...