题目
26年5月18日(二刷看解Go)
func inorderTraversal(root *TreeNode) []int {
var result []int//问一下为什么不能{}
stack:=[]*TreeNode{}//为什么不能写root
cur:=root
for cur!=nil||len(stack)>0 {
for cur!=nil{
stack=append(stack,cur)
cur=cur.Left
}
cur=stack[len(stack)-1]
stack=stack[:len(stack)-1]
result=append(result,cur.Val)
cur=cur.Right
}
return result
}
思路
先序遍历的特点是先访问根节点然后再处理左右子树,中序遍历并不能套用这样的逻辑, 中序遍历需要用cur指针记录每一个栈里的根节点的位置,随后逐步回调。