根據一棵樹的前序遍歷與中序遍歷構造二叉樹。
注意: 你可以假設樹中沒有重複的元素。
例如,給出
前序遍歷 preorder = [3,9,20,15,7] 中序遍歷 inorder = [9,3,15,20,7] 返回如下的二叉樹:
3
/ \9 20
/ \
15 7
//go/** * definition for a binary tree node.
* type treenode struct
*/func buildtree(preorder int, inorder int) *treenode
root := &treenode
i := 0
// 在inorder裡root的下標
for ; i < len(inorder); i++
}// root前的長度,即左子樹的長度
stopindex := len(inorder[:i])+1
root.left = buildtree(preorder[1:stopindex], inorder[:i])
root.right = buildtree(preorder[stopindex:], inorder[i+1:])
return root
}
preorder第乙個元素為root,在inorder裡面找到root,在它之前的為左子樹(長stopindex),之後為右子樹。
preorder[1]到preorder[stopindex]為左子樹,之後為右子樹,分別遞迴。
從前序與中序遍歷序列構造二叉樹
題目描述 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 ...