二叉树的基本运算2

栏目: 数据库 · 发布时间: 7年前

内容简介:这一篇是接上一篇文章二叉树遍历分为三种:前序、中序、后序:另外还有一种

这一篇是接上一篇文章 二叉树的基本运算

二叉树的遍历

二叉树遍历分为三种:前序、中序、后序:

  • 前序遍历:根结点 -> 左子树 -> 右子树
  • 中序遍历:左子树 -> 根结点 -> 右子树
  • 后序遍历:左子树 -> 右子树 -> 根结点

另外还有一种 层次遍历 ,即每一层都从左向右遍历。

譬如,对于下面的二叉树

二叉树的基本运算2

前序遍历:abdefgc

中序遍历:debgfac

后序遍历:edgfbca

层次遍历:abcdfeg

实现方法

因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用 去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现, 非递归后序遍历 实现起来相对来说要难一点

中序遍历

go实现

// 中序遍历,用栈实现
func inOrderBinaryTree1(root *BinaryTreeNode) {
    if root == nil {
        return
    }
    stack := []*BinaryTreeNode{}
    top := -1

    for top >= 0 || root != nil {
        for root != nil {
            stack = append(stack, root)
            top++
            root = root.lChild
        }
        item := stack[top]
        stack = stack[:top]
        top-- // 出栈

        fmt.Print(item.data)
        if item.rChild != nil {
            root = item.rChild
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Redis实战

Redis实战

Josiah L. Carlson / 黄健宏 / 人民邮电出版社 / 2015-10

【内容简介】 本书深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法,是一本对于学习和使用 Redis 来说不可多得的参考书籍。 本书一共由三个部分组成。第一部分对Redis进行了介 绍,说明了Redis的基本使用方法、它拥有的5种数据结构以及操作这5种数据结构的命令,并讲解了如何使用Redis去构......一起来看看 《Redis实战》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具