從前序與中序遍歷序列構造二叉樹

2022-05-16 06:31:40 字數 897 閱讀 2527

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。

注意: 你可以假設樹中沒有重複的元素。

例如,給出

前序遍歷 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 ...