广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python递归式实现二叉树前序,中序,后序遍历
  • 289
分享到

怎么用Python递归式实现二叉树前序,中序,后序遍历

2023-06-29 10:06:27 289人浏览 八月长安

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

摘要

今天小编给大家分享一下怎么用python递归式实现二叉树前序,中序,后序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。记

今天小编给大家分享一下怎么用python递归式实现二叉树前序,中序,后序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

记忆点:

怎么用Python递归式实现二叉树前序,中序,后序遍历

  • 前序:VLR

  • 中序:LVR

  • 后序:LRV

举例:

一颗二叉树如下图所示:

怎么用Python递归式实现二叉树前序,中序,后序遍历

则它的前序、中序、后序遍历流程如下图所示:

怎么用Python递归式实现二叉树前序,中序,后序遍历

1.前序遍历

class Solution:    def preorderTraversal(self, root: Treenode):            def preorder(root: TreeNode):            if not root:                return            res.append(root.val)            preorder(root.left)                        preorder(root.right)                    res = []        preorder(root)        return res

2.中序遍历

class Solution:    def inorderTraversal(self, root: TreeNode):                def inorder(root: TreeNode):            if not root:                return            inorder(root.left)            res.append(root.val)            inorder(root.right)                res = []        inorder(root)        return res

3.后序遍历

class Solution:    def postorderTraversal(self, root: TreeNode):                def postorder(root: TreeNode):            if not root:                return            postorder(root.left)            res.append(root.val)            postorder(root.right)                res = []        postorder(root)        return res

4.测试

class TreeNode:    def __init__(self, val=0, left=None, right=None):        self.val = val        self.left = left        self.right = right# 用列表递归创建二叉树def createTree(root,list_n,i):    if i <len(list_n):        if list_n[i] == 'null':                return None        else:            root = TreeNode(val = list_n[i])            root.left = createTree(root.left,list_n,2*i+1)            root.right = createTree(root.right,list_n,2*i+2)            return root          return root        class Solution:    def preorderTraversal(self, root: TreeNode): # 前序            def preorder(root: TreeNode):            if not root:                return            res.append(root.val)            preorder(root.left)                        preorder(root.right)                    res = []        preorder(root)        return res    def inorderTraversal(self, root: TreeNode): # 中序            def inorder(root: TreeNode):            if not root:                return            inorder(root.left)            res.append(root.val)            inorder(root.right)                    res = []        inorder(root)        return res            def postorderTraversal(self, root: TreeNode): # 后序            def postorder(root: TreeNode):            if not root:                return            postorder(root.left)            postorder(root.right)            res.append(root.val)                    res = []        postorder(root)        return resif __name__ == "__main__":    root = TreeNode()    list_n = [1,2,3,4,5,6,7,8,'null',9,10]    root = createTree(root,list_n,0)    s = Solution()    res_pre = s.preorderTraversal(root)    res_in = s.inorderTraversal(root)    res_post = s.postorderTraversal(root)    print(res_pre)    print(res_in)    print(res_post)

5.结果

怎么用Python递归式实现二叉树前序,中序,后序遍历

6.补充

6.1N叉树前序遍历

"""# Definition for a Node.class Node:    def __init__(self, val=None, children=None):        self.val = val        self.children = children"""class Solution:    def postorder(self, root: 'Node') -> List[int]:        def seq(root):            if not root:                return            res.append(root.val)            for child in root.children:                seq(child)                    res = []        seq(root)        return resN叉树后序遍历"""# Definition for a Node.class Node:    def __init__(self, val=None, children=None):        self.val = val        self.children = children"""class Solution:    def postorder(self, root: 'Node') -> List[int]:        def seq(root):            if not root:                return            for child in root.children:                seq(child)            res.append(root.val)        res = []        seq(root)        return res

以上就是“怎么用Python递归式实现二叉树前序,中序,后序遍历”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: 怎么用Python递归式实现二叉树前序,中序,后序遍历

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 递归式实现二叉树前序,中序,后序遍历
    目录1.前序遍历2.中序遍历3.后序遍历4.测试5.结果6.补充6.1N叉树前序遍历记忆点: 前序:VLR中序:LVR后序:LRV 举例: 一颗二叉树如下图所示: 则它的前序、中...
    99+
    2022-11-13
  • 怎么用Python递归式实现二叉树前序,中序,后序遍历
    今天小编给大家分享一下怎么用Python递归式实现二叉树前序,中序,后序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。记...
    99+
    2023-06-29
  • C++非递归实现二叉树的前中后序遍历
    目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的前序遍历 在不使用递归的方式遍历二叉树时,我们可以使用一个栈模拟递归的机制。二叉树的前序遍历顺序是:根 → 左子树 → ...
    99+
    2022-11-12
  • C++非递归如何实现二叉树的前中后序遍历
    小编给大家分享一下C++非递归如何实现二叉树的前中后序遍历,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二叉树的前序遍历在不使用递归的方式遍历二叉树时,我们可以使...
    99+
    2023-06-21
  • 二叉树递归迭代及morris层序前中后序遍历详解
    目录分析二叉树的前序,中序,后序的遍历步骤1.层序遍历方法一:广度优先搜索方法二:递归2.前序遍历3.中序遍历4.后序遍历递归解法前序遍历--递归中序遍历--递归后序遍历--递归迭代...
    99+
    2022-11-12
  • java非递归实现之二叉树的前中后序遍历详解
    二叉树的前中后序遍历 核心思想:用栈来实现对节点的存储。一边遍历,一边将节点入栈,在需要时将节点从栈中取出来并遍历该节点的左子树或者右子树,重复上述过程,当栈为空时,遍历完成。 前序...
    99+
    2022-11-12
  • C++二叉树的前序中序后序非递归怎么实现
    这篇“C++二叉树的前序中序后序非递归怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++二叉树的前序中序后序非递归...
    99+
    2023-07-05
  • 二叉树的中序、先序、后序遍历非递归遍历算法(使用堆栈,用循环实现)
    typedef struct TreeNode *BinTree; typedef BinTree Position;  struct TreeN...
    99+
    2022-10-18
  • 刷题系列 - Python中怎么通过非递归实现二叉树前序遍历
    这期内容当中小编将会给大家带来有关刷题系列 - Python中怎么通过非递归实现二叉树前序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。二叉树前序遍历(Binary Tree Preorder Tra...
    99+
    2023-06-02
  • Python用非递归实现二叉树中序遍历代码分享
    这篇文章主要介绍“Python用非递归实现二叉树中序遍历代码分享”,在日常操作中,相信很多人在Python用非递归实现二叉树中序遍历代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python用非递归实...
    99+
    2023-06-02
  • C++怎么实现二叉树的后序遍历
    这篇文章主要介绍“C++怎么实现二叉树的后序遍历”,在日常操作中,相信很多人在C++怎么实现二叉树的后序遍历问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现二叉树的后序遍历”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • 怎么解析python二叉树的后序遍历
    怎么解析python二叉树的后序遍历,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。二叉树的后序遍历题目给定一个二叉树,返回它的 后序 遍历。 示例:输入: [1,...
    99+
    2023-06-19
  • Java 数据结构中二叉树前中后序遍历非递归的具体实现详解
    目录一、前序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现二、中序遍历1.题目描述2.输入输出示例3.解题思路4.代码实现三、后序遍历1.题目描述2.输入输出示例3.解题思...
    99+
    2022-11-12
  • C++二叉树的前序中序后序非递归实现方法详细讲解
    目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历总结二叉树的前序遍历 前序遍历的顺序是根、左、右。任何一颗树都可以认为分为左路节点,左路节点的右子树。先访问左路节点,再来访问左路...
    99+
    2023-03-08
    C++二叉树的非递归实现 C++二叉树的前序中序后序非递归实现
  • C++怎么实现二叉树层序遍历
    本篇内容主要讲解“C++怎么实现二叉树层序遍历”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现二叉树层序遍历”吧!二叉树层序遍历Given a binary tree, return...
    99+
    2023-06-20
  • C++怎么实现由先序和中序遍历二叉树
    这篇文章主要介绍了C++怎么实现由先序和中序遍历二叉树的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++怎么实现由先序和中序遍历二叉树文章都会有所收获,下面我们一起来看看吧。由先序和中序遍历建立二叉树Give...
    99+
    2023-06-19
  • 如何进行Java 数据结构中二叉树前中后序遍历非递归的具体实现
    本篇文章为大家展示了如何进行Java 数据结构中二叉树前中后序遍历非递归的具体实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、前序遍历1.题目描述给你二叉树的根节点 root ,返回它节点值的...
    99+
    2023-06-25
  • 刷题系列 - Python用非递归实现二叉树后续遍历
    顺便把Python用非递归实现二叉树后续遍历也写了。其实前序中序和后续都是针对父节点说的。比如下面这个最简单二叉树。前序就是ABC,父节点A在前中序就是BAC,父节点A在中间后序就是BCA,父节点A在最后无论多复杂二叉树,基本都是同样遍历流...
    99+
    2023-06-02
  • 怎么解析python二叉树的中序遍历
    今天就跟大家聊聊有关怎么解析python二叉树的中序遍历,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。二叉树的中序遍历题目给定一个二叉树,返回它的 中序 遍历。示例:输入: [1,n...
    99+
    2023-06-19
  • C++实现LeetCode(106.由中序和后序遍历建立二叉树)
    [LeetCode] 106. Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树 Gi...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作