用户:
留梦灵溪查看:72 回复:3 评论:4 创建时间:2023-04-23T19:35:35
代码如下,有没有大佬能讲一下构造二叉树的思路是什么,想了一上午没想明白
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func buildTree(inorder []int, postorder []int) *TreeNode {
if len(postorder) == 0 {
return nil
}
root := &TreeNode{Val: postorder[len(postorder)-1]}
stack := []*TreeNode{root}
inorderIndex := len(inorder) - 1
for i := len(postorder) - 2; i >= 0; i-- {
postorderVal := postorder[i]
node := stack[len(stack)-1]
if node.Val != inorder[inorderIndex] {
node.Right = &TreeNode{Val: postorderVal}
stack = append(stack, node.Right)
} else {
for len(stack) > 0 && stack[len(stack)-1].Val == inorder[inorderIndex] {
node = stack[len(stack)-1]
stack = stack[:len(stack)-1]
inorderIndex--
}
node.Left = &TreeNode{Val: postorderVal}
stack = append(stack, node.Left)
}
}
return root
}
𝙲ℴ𝗌𝔦𝒹ₑ𝑟jvavspeic玩家不是看懂了一半又没有(主要是运算符不了解()
点赞0
评论
:= & : *object
主要是用的go语言,不知道咱们编程猫的有没有学过这方面的
算法这东西我还是一窍不通啊
js与go有点像,理解起来不太难,容我先看看go运算符