美文网首页
实现二叉树的前、中、后序遍历

实现二叉树的前、中、后序遍历

作者: 梁森的简书 | 来源:发表于2021-02-22 22:54 被阅读0次

前、中、后序遍历都是相对于父节点说的
前序遍历

func preErgodic() -> Queue<String> {
        var queue = Queue<String>()
        preErgodic(node: root, queue: &queue)
        return queue
    }
    func preErgodic(node: TreeNode?, queue: inout Queue<String>) {
        if node == nil {
            return
        }
        queue.enQueue(item: node?.key ?? "")
        if node?.left != nil {
            preErgodic(node: node?.left, queue: &queue)
        }
        if node?.right != nil {
            preErgodic(node: node?.right, queue: &queue)
        }
    }

中序遍历

func middleErgodic() -> Queue<String> {
        var queue = Queue<String>()
        middleErgodic(node: root, queue: &queue)
        return queue
    }
    func middleErgodic(node: TreeNode?, queue: inout Queue<String>) {
        if node == nil {
            return
        }
        if node?.left != nil {
            // 通过递归把左子树中的所有键放入队列中
            middleErgodic(node: node?.left, queue: &queue)
        }
        // 将节点的键放入队列中
        queue.enQueue(item: node?.key ?? "")
        if node?.right != nil {
            // 通过递归把右子树中的所有键放入队列中
            middleErgodic(node: node?.right, queue: &queue)
        }
    }

后序遍历

func afterErgodic() -> Queue<String> {
        var queue = Queue<String>()
        afterErgodic(node: root, queue: &queue)
        return queue
    }
    func afterErgodic(node: TreeNode?, queue: inout Queue<String>) {
        if node == nil {
            return
        }
        if node?.left != nil {
            afterErgodic(node: node?.left, queue: &queue)
        }
        if node?.right != nil {
            afterErgodic(node: node?.right, queue: &queue)
        }
        queue.enQueue(item: node?.key ?? "")
    }

demo地址:https://github.com/yangguanghei/studyDateStructure

相关文章

  • 递归调用中的递归序

    从刚开始接触递归,到接触二叉树递归遍历,简单几行代码就能实现前中后序遍历,而且,前中后序遍历的代码基本一致,觉得好...

  • 二叉树的各种遍历方法

    二叉树的常用遍历方法 二叉树常用的遍历方法包括: 前序遍历 中序遍历 后序遍历 层次遍历 而前三种遍历的具体实现上...

  • 二叉树的操作

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

  • 数据结构与算法二叉树的遍历与线索二叉树以及森林

    1.二叉树的遍历先序遍历、中序遍历、后序遍历 2.层次遍历利用队列实现 3.由遍历序列构成二叉树先序、后序可以与众...

  • 07-13:二叉树review1

    二叉树review1: 1、二叉树结构 1)二叉树的遍历 0)递归/迭代实现 前/中/后序遍历 递归 迭代 层次遍...

  • 二叉树BinaryTree

    Java 实现二叉树的构造以及遍历过程 二叉树遍历(先序、中序、后序)

  • 二叉树的递归遍历(java版)

    1. 场景需求 二叉树如图 java中利用递归实现二叉树的各种遍历 前序遍历 中序遍历 后序遍历 3.代码实现 3...

  • 看图说话之二叉树的前序,中序,后序,层次遍历方式

    二叉树的前序,中序,后序遍历的递归实现 树的遍历方式都多种,其中树的前序,中序,后序遍历方,在原理和代码实现上都有...

  • 2018-09-07

    二叉树的前中后序遍历 二叉树由左子树、右子树和根组成(L, R,D) 前,中,后序遍历是针对根节点来说的。DLR ...

  • 二叉树的遍历方式

    二叉树的遍历方式有多种,前序遍历,中序遍历,后序遍历,层序遍历,在这里来介绍一下前、中、后序遍历。 前序遍历:根左...

网友评论

      本文标题:实现二叉树的前、中、后序遍历

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