二叉树的遍历{迭代实现}
二叉树的遍历#
前序遍历#
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func preorderTraversal(root *TreeNode) []int {
var stack []*TreeNode
var res []int
stack=append(stack,root)
for len(stack)!=0{
node:=stack[len(stack)-1]
stack=stack[:len(stack)-1]
if node!=nil{
res=append(res,node.Val)
}else{
continue
}
stack=append(stack,node.Right)
stack=append(stack,node.Left)
}
return res
}
后序遍历#
func postorderTraversal(root *TreeNode) []int {
var stack []*TreeNode
var res []int
stack=append(stack,root)
for len(stack)!=0{
node:=stack[len(stack)-1]
stack=stack[:len(stack)-1]
if node!=nil{
res=append(res,node.Val)
}else{
continue
}
stack=append(stack,node.Left)
stack=append(stack,node.Right)
}
reverse(res)
return res
}
func reverse(a []int) {
l, r := 0, len(a) - 1
for l < r {
a[l], a[r] = a[r], a[l]
l, r = l+1, r-1
}
}
中序遍历#
func inorderTraversal(root *TreeNode) []int {
var res []int
var stack []*TreeNode
cur:=root
for len(stack)!=0||cur!=nil{
if cur!=nil{
stack=append(stack,cur)
cur=cur.Left
}else{
cur=stack[len(stack)-1]
stack=stack[:len(stack)-1]
res=append(res,cur.Val)
cur=cur.Right
}
}
return res
}
作者:suehoo
出处:https://www.cnblogs.com/suehoo/p/17029758.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!