GoLang 数据结构-二叉树
- 二叉树的定义
- 二叉树是递归循环
- 有很多树,每个树最多有两个子节点,这,被称为二叉树
-
二叉树的遍历
- 前序遍历
- EachByLast前序遍历,
- 先输出root节点,
- 在输出左侧子树,
- 在输出右侧子树
- 中序遍历
-
EachByInfixOrder 中序遍历,
-
先输出root左侧子树,
-
在输出root节点,
-
在输出root右侧子树
- 后序遍历
-
EachByPostOrder 后序遍历,
-
先输出root右侧子树,
-
在输出root节点,
-
在输出root左侧子树
- 代码

1 package main 2 3 import "fmt" 4 5 //Cat 猫猫结构体 6 type Cat struct { 7 No int 8 Name string 9 Left *Cat 10 Right *Cat 11 } 12 13 //EachByLast 前序遍历,先输出root节点,在输出左侧子树,在输出右侧子树 14 func EachByLast(catNode *Cat) { 15 if catNode != nil { 16 fmt.Printf("%v %v\n", catNode.No, catNode.Name) 17 EachByLast(catNode.Left) 18 EachByLast(catNode.Right) 19 } 20 } 21 22 //EachByInfixOrder 中序遍历,先输出root左侧子树,在输出root节点,在输出root右侧子树 23 func EachByInfixOrder(catNode *Cat) { 24 if catNode != nil { 25 26 EachByInfixOrder(catNode.Left) 27 fmt.Printf("%v %v\n", catNode.No, catNode.Name) 28 EachByInfixOrder(catNode.Right) 29 } 30 } 31 32 //EachByPostOrder 后序遍历,先输出root右侧子树,在输出root节点,在输出root左侧子树 33 func EachByPostOrder(catNode *Cat) { 34 if catNode != nil { 35 36 EachByPostOrder(catNode.Right) 37 fmt.Printf("%v %v\n", catNode.No, catNode.Name) 38 EachByPostOrder(catNode.Left) 39 40 } 41 } 42 43 func main() { 44 //构建一个二叉树 45 root := &Cat{ 46 No: 1, 47 Name: "汤姆猫", 48 } 49 left1 := &Cat{ 50 No: 2, 51 Name: "小白猫", 52 } 53 left2 := &Cat{ 54 No: 5, 55 Name: "大橘猫", 56 } 57 58 right1 := &Cat{ 59 No: 3, 60 Name: "小黑猫", 61 } 62 right2 := &Cat{ 63 No: 4, 64 Name: "三花猫", 65 } 66 right3 := &Cat{ 67 No: 6, 68 Name: "奶牛猫", 69 } 70 root.Left = left1 71 left1.Left = left2 72 left2.Right = right3 73 root.Right = right1 74 right1.Right = right2 75 76 EachByPostOrder(root) 77 }
时间若流水,恍惚间逝去
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?