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

go数据结构(二叉树的遍历)_第1张图片

 go数据结构(二叉树的遍历)_第2张图片

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

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

 二叉树的遍历方式:

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

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

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

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

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

go数据结构(二叉树的遍历)_第3张图片

前序遍历

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

递归前序

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博客

你可能感兴趣的:(数据结构,go)