根據一棵樹的前序遍歷與中序遍歷構造二叉樹。
解題思路:
//[left,right)這個區間就表示當前preorder[index]這個結點對應的子樹的中序遍歷結果
private treenode buildtreehelper
(int
preorder,
int[
] inorder,
int left,
int right)
if(index>preorder.length)
//根據當前結點的值建立出根節點
treenode root=
newtreenode
(preorder[index]);
index++
;//節點建立完畢,就index++準備處理下乙個節點
//根據該節點在中序遍歷結果中的位置,把inorder陣列劃分成兩個部分
int pos=
find
(inorder,left,right,root.val)
;//[left,pos)表示當前左子樹的中序遍歷結果
//[pos+1,right)表示當前root右子樹的中序遍歷結果
root.left=
buildtreehelper
(preorder,inorder,left,pos)
; root.right=
buildtreehelper
(preorder,inorder,pos+
1,right)
;return root;
}private
intfind
(int
inorder,
int left,
int right,
int val)
}return-1;}}
從前序與中序遍歷序列構造二叉樹
題目描述 if inbegin inend 區間只有乙個結點,就是根結點 區間正常 int rootindex inbegin while rootindex inend 用前序的根劃分中序為兩個子區間 else 遞迴建立左子樹 root left buildtree preorder,pindex...
從前序與中序遍歷序列構造二叉樹
根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7python definition for a binary tree...
從前序與中序遍歷序列構造二叉樹
根據一棵樹的前序遍歷與中序遍歷構造二叉樹。definition for a binary tree node.public class treenode class solution int rootidx left while rootidx right rootidx 前序 3 9 20 15 ...