go数据结构(二叉树的遍历)

 

用数组来存储二叉树如何遍历的呢?

如果父节点的数组下表是i,那么它的左孩子就是i * 2 + 1,右孩子就是 i * 2 + 2。

 二叉树的遍历方式:

二叉树有三种基本遍历方式,分别是前序遍历、中序遍历和后序遍历。遍历的原理是从根节点开始,按照特定方式递归遍历左子树和右子树,每次对访问到的节点进行操作。

  • 前序遍历:先访问根节点再访问左子树,最后访问右子树。
  • 中序遍历:先访问左子树再访问根节点,最后访问右子树。
  • 后序遍历:先访问左子树再访问右子树,最后访问根节点

这里前中后,其实指的就是中间节点的遍历顺序,只要记住 前中后序指的就是中间节点的位置就可以了

看如下中间节点的顺序,就可以发现,中间节点的顺序就是所谓的遍历方式

  • 前序遍历:中左右
  • 中序遍历:左中右
  • 后序遍历:左右中

前序遍历

对每颗子树,均遵循根节点–>左节点–>右节点

递归前序

func preShowTree(head *Node) {
	if head == nil {
		return
	}
	fmt.Println(head.V)//第一次来到节点的时候打印
	showTree(head.Left)
	showTree(head.Right)
}

中序遍历

中序:对每颗子树,均遵循左节点–>根节点–>右节点

递归中序

func midShowTree(head *Node) {
	if head == nil {
		return
	}
	showTree(head.Left)
    fmt.Println(head.V)//第二次来到节点的时候打印
	showTree(head.Right)
}

后序遍历

后序:对每颗子树,均遵循左节点–>右节点–>根节点

递归后序

func afterShowTree(head *Node) {
	if head == nil {
		return
	}
	showTree(head.Left)
	showTree(head.Right)
    fmt.Println(head.V)//第三次来到节点的时候打印
}

参考:二叉树入门知识——一篇了解二叉树_我永远信仰的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值