返回顶部
首页 > 资讯 > 后端开发 > Python >刷题系列 - Python用非递归实现二叉树后续遍历
  • 649
分享到

刷题系列 - Python用非递归实现二叉树后续遍历

2023-06-02 00:06:50 649人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

顺便把python用非递归实现二叉树后续遍历也写了。其实前序中序和后续都是针对父节点说的。比如下面这个最简单二叉树。前序就是ABC,父节点A在前中序就是BAC,父节点A在中间后序就是BCA,父节点A在最后无论多复杂二叉树,基本都是同样遍历流

顺便把python用非递归实现二叉树后续遍历也写了。

其实前序中序和后续都是针对父节点说的。比如下面这个最简单二叉树。

前序就是ABC,父节点A在前

中序就是BAC,父节点A在中间

后序就是BCA,父节点A在最后

无论多复杂二叉树,基本都是同样遍历流程。

刷题系列 - Python用非递归实现二叉树后续遍历

后续遍历可以说是最简单的,从左开始遍历并放入栈,读取没有下级节点的节点值,然后把该节点推出栈,并删除和上级节点关联;然后替换栈中最上的点,并去遍历右边子节点;直到栈为空,遍历结束。

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    def postorderTraversal(self, root: TreeNode) -> List[int]:        traversalList = []        nodeList = []        # travel the node, add to node stack, if the node without any sub-node, record the val; then remove it and it's link with parnet, travel back to last one in stack.        if root != None:            nodeList.append(root)            while nodeList != []:                if nodeList[-1].left != None:                    nodeList.append(nodeList[-1].left )                elif nodeList[-1].right != None:                    nodeList.append(nodeList[-1].right)                else:                    traversalList.append(nodeList[-1].val)                    currentNode = nodeList.pop()                    if nodeList != []:                        if nodeList[-1].right == currentNode:                            nodeList[-1].right = None                        elif nodeList[-1].left == currentNode:                            nodeList[-1].left = None        return traversalList

--结束END--

本文标题: 刷题系列 - Python用非递归实现二叉树后续遍历

本文链接: https://lsjlt.com/news/228252.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 刷题系列 - Python用非递归实现二叉树后续遍历
    顺便把Python用非递归实现二叉树后续遍历也写了。其实前序中序和后续都是针对父节点说的。比如下面这个最简单二叉树。前序就是ABC,父节点A在前中序就是BAC,父节点A在中间后序就是BCA,父节点A在最后无论多复杂二叉树,基本都是同样遍历流...
    99+
    2023-06-02
  • 刷题系列 - Python中怎么通过非递归实现二叉树前序遍历
    这期内容当中小编将会给大家带来有关刷题系列 - Python中怎么通过非递归实现二叉树前序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。二叉树前序遍历(Binary Tree Preorder Tra...
    99+
    2023-06-02
  • C++非递归实现二叉树的前中后序遍历
    目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的前序遍历 在不使用递归的方式遍历二叉树时,我们可以使用一个栈模拟递归的机制。二叉树的前序遍历顺序是:根 → 左子树 → ...
    99+
    2024-04-02
  • java栈如何实现二叉树的非递归遍历
    这篇文章主要介绍了java栈如何实现二叉树的非递归遍历,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。二叉树设置class Node{public int&...
    99+
    2023-06-14
  • C++实现二叉树非递归遍历算法详解
    目录一、二叉树的前序遍历二、二叉树的中序遍历三、二叉树的后序遍历3.1 方法一3.2 方法二一、二叉树的前序遍历 题目链接 我们可以把任何一棵树看成左路节点,左路节点和右子树。先访问...
    99+
    2023-05-17
    C++二叉树非递归遍历 C++非递归遍历 C++二叉树遍历
  • C++非递归如何实现二叉树的前中后序遍历
    小编给大家分享一下C++非递归如何实现二叉树的前中后序遍历,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二叉树的前序遍历在不使用递归的方式遍历二叉树时,我们可以使...
    99+
    2023-06-21
  • Python用非递归实现二叉树中序遍历代码分享
    这篇文章主要介绍“Python用非递归实现二叉树中序遍历代码分享”,在日常操作中,相信很多人在Python用非递归实现二叉树中序遍历代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python用非递归实...
    99+
    2023-06-02
  • java非递归实现之二叉树的前中后序遍历详解
    二叉树的前中后序遍历 核心思想:用栈来实现对节点的存储。一边遍历,一边将节点入栈,在需要时将节点从栈中取出来并遍历该节点的左子树或者右子树,重复上述过程,当栈为空时,遍历完成。 前序...
    99+
    2024-04-02
  • Python 递归式实现二叉树前序,中序,后序遍历
    目录1.前序遍历2.中序遍历3.后序遍历4.测试5.结果6.补充6.1N叉树前序遍历记忆点: 前序:VLR中序:LVR后序:LRV 举例: 一颗二叉树如下图所示: 则它的前序、中...
    99+
    2024-04-02
  • java栈实现二叉树的非递归遍历的示例代码
    一般来说遍历二叉树用到递归,但是用Stack进行遍历也是一个不错的方法。 二叉树设置 class Node{ public int val; public Node left...
    99+
    2024-04-02
  • 怎么用Python递归式实现二叉树前序,中序,后序遍历
    今天小编给大家分享一下怎么用Python递归式实现二叉树前序,中序,后序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。记...
    99+
    2023-06-29
  • 二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
    typedef struct TreeNode *BinTree; typedef BinTree Position;  struct TreeN...
    99+
    2024-04-02
  • 刷题系列 - 中序和后序遍历队列,构造对应二叉树;
    假期继续刷题,也没有别的什么事情可以干。这个题是给出中序和后序遍历队列,构造对应二叉树;题目很简单,如下图,给出两个遍历队列,构成二叉树,这里假定没有重复点。 想了好几天,真是惭愧,因为一直想一次遍历就完成构造,最后发现不行;然后...
    99+
    2023-06-02
  • Java 数据结构中二叉树前中后序遍历非递归的具体实现详解
    目录一、前序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现二、中序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现三、后序遍历1.题目描述2.输入输出示例3.解题思...
    99+
    2024-04-02
  • 如何进行Java 数据结构中二叉树前中后序遍历非递归的具体实现
    本篇文章为大家展示了如何进行Java 数据结构中二叉树前中后序遍历非递归的具体实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、前序遍历1.题目描述给你二叉树的根节点 root ,返回它节点值的...
    99+
    2023-06-25
  • C++二叉树的前序中序后序非递归怎么实现
    这篇“C++二叉树的前序中序后序非递归怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++二叉树的前序中序后序非递归...
    99+
    2023-07-05
  • 刷题系列 - 给出前序和中序遍历队列,构造对应二叉树
    既然中序和后序队列构成二叉树写了,就把前序和中序一做吧。原理其实也很简单,前序队列第一个点就是根节点,再中序队列里面这个根节点可以分出左右两个树的两个中序队列,然后可以按照左右树的节点数量,再前序节点里面分出对应两组前序队列;然后反复递归即...
    99+
    2023-06-02
  • Python怎么用递归实现求二叉树深度
    本篇内容介绍了“Python怎么用递归实现求二叉树深度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!其实就是求二叉树层级,比如一个单点就是一...
    99+
    2023-06-02
  • C++二叉树的前序中序后序非递归实现方法详细讲解
    目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历总结二叉树的前序遍历 前序遍历的顺序是根、左、右。任何一颗树都可以认为分为左路节点,左路节点的右子树。先访问左路节点,再来访问左路...
    99+
    2023-03-08
    C++二叉树的非递归实现 C++二叉树的前序中序后序非递归实现
  • 刷题系列 - 用递归和遍历两个方法反转一个单链队列
    二叉树的题目告一段落,后面陆续做了些基础的题;感觉没有什么好记录的。这次是一个非常基础题目用递归和遍历两个方法反转一个单链队列。如下所示。Input: 1->2->3->4->5->NULLOutput: 5-...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作