[Leetcode]25 .从中序与后序遍历序列构造二叉树
题目:根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
中序遍历inoder=[9,3,15,20,7]
后序遍历后置=[9,15,7,20,3]
返回如下的二叉树:
3
/\
9 20
/\
15 7
思想:同上题,递归,只需要更改构造的取值范围即可,注意要取后序遍历的末元素作为每次的根,记得加上结束递归的条件。
订单[:r],订单[:r],
有序[r 1:],有序[r:n]
func buildTree(inorder []int,postorder []int) *TreeNode {
if len(按顺序)=0 {
返回零
}
var r int=0
root :=TreeNode{}
n :=len(后置)- 1
根瓦尔=后置[n]
对于I :=0;我镜头(按顺序);我
if inorder[i]==postorder[n] {
r=i
破裂
}
}
根左=BuildTree(顺序[:r],后顺序[: r])
根右=BuildTree(按顺序[r 1:],后顺序[r:n])
返回根
}
题目来源:https://leet代码-cn。com/问题/构造-二叉树-从有序到有序再到有序-遍历/
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/89928.html