美文网首页
二叉树 前/中/后/层 四种方式遍历递归实现

二叉树 前/中/后/层 四种方式遍历递归实现

作者: 缘木求鱼的鱼 | 来源:发表于2020-01-03 16:03 被阅读0次

  二叉树的遍历,无论是在leetcode刷题或者面试过程中,都是十分常见,重要性无需赘述。本文将采用Golang语言来实现前/中/后/层四种遍历方式。

二叉树定义
// 二叉树节点定义
type TreeNode struct {
    Val   int
    Left  *TreeNode  // 左子树
    Right *TreeNode // 右子树
}
二叉树样例

一. 前序遍历

    1. 遍历顺序
        中 -> 左 -> 右。
    1. 代码实现
// 前序遍历
func PreOrderTraversal(tree *TreeNode) {
    if tree == nil {
        return
    }

    fmt.Printf(" %d -> ", tree.Val)
    PreOrderTraversal(tree.Left)
    PreOrderTraversal(tree.Right)
}
    1. 结果输出
      1 -> 2 -> 4 -> 3 -> 5 -> 6 ->

二. 中序遍历

    1. 遍历顺序
        左 -> 中 -> 右。
    1. 代码实现
// 中序遍历
func MidOrderTraversal(tree *TreeNode) {
    if tree == nil {
        return
    }

    MidOrderTraversal(tree.Left)
    fmt.Printf(" %d -> ", tree.Val)
    MidOrderTraversal(tree.Right)
}
    1. 结果输出
      4 -> 2 -> 1 -> 5 -> 3 -> 6 ->

三. 后序遍历

    1. 遍历顺序
        左 -> 右 -> 中。
    1. 代码实现
// 后序遍历
func PostOrderTraversal(tree *TreeNode) {
    if tree == nil {
        return
    }

    PostOrderTraversal(tree.Left)
    PostOrderTraversal(tree.Right)
    fmt.Printf(" %d -> ", tree.Val)
}
    1. 结果输出
      4 -> 2 -> 5 -> 6 -> 3 -> 1 ->

四. 按层遍历

    1. 遍历顺序
        层。
    1. 代码实现
// 按层遍历

func LevelOrderTraversal(tree *TreeNode) {
    if tree == nil {
        return
    }

    // 采用队列实现
    queue := make([]*TreeNode, 0)
    queue = append(queue, tree) // queue push
    for len(queue) > 0 {
        tree = queue[0]
        fmt.Printf(" %d -> ", tree.Val)

        queue = queue[1:] // queue pop

        if tree.Left != nil {
            queue = append(queue, tree.Left)
        }
        if tree.Right != nil {
            queue = append(queue, tree.Right)
        }
    }
}
    1. 结果输出
      1 -> 2 -> 3 -> 4 -> 5 -> 6 ->

相关文章

  • 二叉树的各类遍历方法

    二叉树的遍历主要有四种:前序、中序、后序、层序。 遍历的实现方式主要是:递归和非递归。递归遍历的实现非常容易,非递...

  • 左神算法笔记——Morris遍历

    基本问题——实现二叉树的前序、中序、后序遍历 (递归、非递归,mirros方法) 递归 递归方式下的前中后遍历 非...

  • 二叉树三种遍历的递归和非递归实现&层次遍历实现(C++)

    对于二叉树的三种遍历方式(先序、中序、后序),用递归和非递归(栈)的方式实现,对于后序遍历用队列实现。 四种遍历方...

  • 【数据结构】【C#】027-二叉树(BT):🌱创建,遍历(非递归

    遍历的实现 上一篇记录了二叉树的四种遍历:先序,中序,后序,层序;有递归实现,也有非递归,递归比较简单,主要探讨非...

  • 二叉树的一些基本知识总结

    学了学二叉树,这里说说怎样遍历二叉树.四种方式:前序遍历,中序遍历,后序遍历,层次遍历. 主要说说递归的遍历方法前...

  • 二叉树的三种深度优先遍历算法与思路

    看了一些关于二叉树遍历算法的文章,例如:二叉树三种遍历方式的递归和循环实现二叉树的递归与非递归遍历(前序、中序、后...

  • 二叉树的操作

    /*主要内容:1、实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式*/ 实现二叉树的先序、中序、后序遍历...

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • 数据结构之二叉树

    数据结构之二叉树 递归构造二叉树 二叉树节点: 递归构造: 图示: 递归遍历 递归实现先序遍历 图示: 递归实现中...

  • 二叉树遍历-JAVA实现

    基础二叉树 二叉树遍历分为前序、中序、后序递归和非递归遍历、还有层序遍历。 前序递归遍历算法:访问根结点-->递归...

网友评论

      本文标题:二叉树 前/中/后/层 四种方式遍历递归实现

      本文链接:https://www.haomeiwen.com/subject/nuwzoctx.html