python 二叉树前序,中序,后序遍历 LeetCode No.144, No.94,No.145

二叉树的前序,中序,后序,层序遍历(python写法总结, python 面试必备) 二叉树的前序,中序,后序,层序遍历(python写法总结, python 面试必备) 二叉树的前序遍历(leetcode 144) Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = N... 阅读详情

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def preorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        return [] if root is None else [root.val] + self.preorderTraversal(root.left) +self.preorderTraversal(root.right)
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def preorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if root is None:
            return []
        
        stack, output = [root], []
        
        while stack:
            root = stack.pop()
            if root is not None:
                output.append(root.val)
                if root.right is not None:
                    stack.append(root.right)
                if root.left is not None:
                    stack.append(root.left)
        
        return output


这题和98基本上是一模一样,所以写98题之后,顺便写了97题,刚好想用一行写完,就有了下面的写法。大家以后写的时候可以多试试,有很大的成就感,而且为枯燥的刷题生活,增添一点乐趣。今天暂时先写个中序遍历吧,等过几天在写个前序和中序,还有ass要做,哭ing。

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        return [] if root is None else self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
        
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        res,stack,p = [],[],root
        while p or stack:
            # 把左子树压入栈中
            while p:
                stack.append(p)
                p = p.left
            # 输出 栈顶元素
            tmp = stack.pop()
            res.append(tmp.val)
            # 看右子树
            p = tmp.right
        return res


# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def postorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        return [] if root is None else self.postorderTraversal(root.left) + self.postorderTraversal(root.right) +[root.val]
        
class Solution(object):
    def postorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if root is None:
            return []

        stack, output = [root ], []
        while stack:
            root = stack.pop()
            output.append(root.val)
            if root.left is not None:
                stack.append(root.left)
            if root.right is not None:
                stack.append(root.right)
                
        return output[::-1]

二叉树的递归遍历与非递归遍历及Python实现--力扣94/144/145 前言 昨天在看Leetcode上《二叉树》部分的书籍,做了四道关于二叉树的遍历的题目,在此总结一下二叉树的三种遍历方式及其实现。 二叉树的遍历 二叉树的遍历可以分为:前序遍历、中序遍历、后序遍历、层次遍历四种。以下面这一个二叉树为例: 前序遍历:首先访问二叉树的根节点,再访问左子树,最后访问右子树。前序遍历的结果为:F-C-A-D-B-E-H-G-M 中序遍历:首先访问二叉树的左子树,再访问根节点,最后访问右子树。中序遍历的结果为:A-C-B-D-F-H-E-M-G 后序遍历:首先访问二叉树的左子树, 阅读详情

相关推荐

人类肠道微生物群落代谢建模

MICOMWeb 是款用户友好型网站,专为人类肠道微生物群落代谢建模设计。该网站旨在解决基因组尺度代谢模型(in silico)构建过程中的3大限制:① 使用 MICOM Python 包进行通量平衡分析时对用户 Python 编程知识的要求;② 支持预定义和用户自定义饮食,以生成专属代谢模型;③ 处理宏基因组鸟枪法测序或 16S 扩增子测序获得的真实丰度数据时,所需的高通量计算基础设施。本文展示了 MICOMWeb 的核心功能,用户可轻松开展虚拟实验,为3个已发表数据集的实验验证生成功能性假设。

多组・学・多组学 1170

python 实现二叉树层次、前序、中序、后序遍历

这段代码使用栈来实现了二叉树的前序、中序和后序遍历。在遍历过程中,通过栈来保存待访问的节点,然后按照遍历顺序出栈并访问节点,同时更新指针指向下一个需要遍历的节点。最终,将遍历结果存储在一个列表中并返回。可以使用递归和栈来实现,递归实现如下。

在不断犯错中成长 777

GPU基准测试全攻略:从驱动验证到深度学习环境部署

GPU基准测试是评估显卡性能与稳定性的核心方法,其原理在于通过标准化负载程序,对GPU的计算单元、显存和散热系统进行压力测试。这项技术的价值在于,它能科学量化硬件性能,确保软件环境配置正确,为深度学习、科学计算等重负载任务提供稳定基础。在实际应用场景中,无论是新卡验机、排查深度学习环境问题(如“warning: no usable gpu found”报错),还是验证“PyTorch GPU版本安装”后的实际算力,系统的基准测试都是不可或缺的工程实践环节。通过结合通用计算测试与深度学习框架验证,用户可以提前

weixin_30080745的博客 343

算法数据结构基础——二叉树的遍历(前序、中序、后序、层序)及python实现

二叉树的遍历:指的是从根节点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点被访问一次且仅被访问一次。在二叉树的一些实际问题中,经常需要按照一定顺序对二叉树中每个节点逐个进行访问一次,用以查找具有某一特点的节点或者全部节点,然后对这些满足要求的节点进行处理。这里所说的「访问」就是指对该节点进行某种操作,例如:依次输出节点的数据信息、统计满足某条件的节点总数等等。回顾二叉树的递归定义可以知道,二叉树是由根节点和左子树、右子树构成的。因此,如果能依次遍历这3个部分,就可以遍历整个二叉树。

白话机器学习 7920

【人工智能】人工智能基础概念、流派、发展史

人工智能初衷就是让计算机能够像人类一样具有自我思考、自我学习、自我决策的能力。依据百度百科上对人工智能定义:人工智能是研究、开发用于模拟、扩展和延伸人的智能的理论、方法、技术及应用系统的一门新的技术学科。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

WEL测试 1882

ethercat linux lan9252 - lan9253调试

linux 的ethercat测试

linsheng_111的专栏 1934

python 二叉树的前中后序遍历 N叉树的遍历

递归方法都简单 用迭代法写 主要利用了栈先进后出的原理,以及一层一层访问数据,操作数据入栈 中序遍历: 先到达左叶子结点(一路向左),然后依次推出栈顶数据,如果该节点存在右子树,则储存完根节点数据后,转向该节点右子树,若不存在右子树且栈不为空,则出栈下一个数据,即左-根-右-左-根-右 前序遍历:从根节点开始,先存储根节点的值,然后依次压入根节点的右孩子、左孩子,并弹出栈顶数据,则弹出顺序为左孩子、右孩子,符合前序遍历 根-左-右的顺序 后序遍历: 两种方法: 一:按照前序遍历,但是依次压入根节点的左

t1471464672的博客 627

【保姆级教程/代码】GNSS反演大气可降水量(Precipitable Water Vapor, PWV)

GPS精密单点定位(PPP)是一种采用精密卫星星历和卫星钟差进行非差单点定位的方法,在观测过程中采用双频载波相位观测法以确保高精度定位精度。本文利用PPP技术来求解天顶对流层延迟(zenith tropospheric delay,ZTD)。ZTD由湿延迟(ZWD)和干延迟(ZHD)组成,其中占比90%的ZHD与地面测站高程、大气压和测站纬度等参数有良好的相关性,可以通过Saastamoinen模型精确求出;

weixin_43910227的博客 2926

python数据结构——基础树结构遍历(深度优先搜索篇)

本篇文章简要的叙述了深度优算法的三种顺序

h20050621的博客 1074

当KCF遇见卡尔曼滤波:视觉跟随算法的动态优化实战

本文探讨了KCF算法与卡尔曼滤波在视觉跟随算法中的动态优化实践,通过深度融合策略提升目标跟踪的鲁棒性和实时性。特别针对机器人应用场景,详细解析了在Jetson等嵌入式平台上的优化技巧,包括计算图优化、内存访问优化和多线程流水线设计,实现了30FPS@1080p的稳定跟踪性能。

sugar的博客 957

YOLO26 改进 - 注意力机制 | Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLO26中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLO26中。

魔改工程师的博客 835

二叉树的前中后序遍历(python)

给你二叉树的根节点root,返回它节点值的遍历。

qq_55755280的博客 248

PHP 网页游戏开发入门教程

我们还链接了一个名为 “game.js” 的 JavaScript 文件,稍后将在其中编写游戏逻辑。这只是一个简单的示例,但它演示了如何使用 PHP 和 JavaScript 开发一个基本的网页游戏。以下是一个示例游戏的源代码和解释。现在,您可以在浏览器中打开 “game.php” 文件,即可看到一个带有红色游戏角色的游戏板。在上述代码中,我们使用 JavaScript 创建了一个游戏角色元素,并将其添加到游戏板容器中。最后,我们需要将游戏元素的样式设置为绝对定位,以便能够正确地控制它们的位置。

KkowServer的博客 678

[LeetCode 94 144 145] 二叉树前序、中序和后序遍历总结(python)

给定一个二叉树,返回它的前序、中序 和后序遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: 前序:[1,2,3] 中序:[1,3,2] 后序:[3,2,1] 进阶:递归算法很简单,你可以通过迭代算法完成吗? 本文分别使用递归和迭代算法实现。 首先使用递归算法,就像上面所说,非常简单,几行代码搞定。 前序...

pl0321的博客 235

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【python数据结构与算法】二叉树的前序、中序、后序遍历(非递归)以及二叉树的层次遍历

二叉树的遍历:非递归版: 注意一下所谓“左中右”的含义,这就是前序中序后序本来面目。前序中序后序,三者是以“中”先打印还是后打印区分的 前序遍历:中左右:当前节点(中)为头,弹栈顺序是先左再右 步骤 先把当前节点的left和right按照先右后左的次序压栈。遇到节点为None,则跳过。 while内:后面继续压栈的节点,是刚弹出的那个节点的左右节点。原因?“中左右”,指的是该...

谁谓荼苦,其甘如荠 1219

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

leetcode144 二叉树的前序遍历,145 二叉树的后序遍历,94 二叉树的中序遍历(python)

文章目录144. 二叉树的前序遍历分析代码通过截图145. 二叉树的后序遍历分析代码通过截图94. 二叉树的中序遍历分析代码通过截图 144. 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 输入:root = [1,2] 输出:[1,2] 示例 5: 输入:root = [1

命运的左轮的博客 222

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode144二叉树的前序遍历,94二叉树的中序遍历,145二叉树的后序遍历

144二叉树的前序遍历,94二叉树的中序遍历,145二叉树的后序遍历

qq_35200479的博客 1282

python算法:二叉树的所有遍历方法,以leetcode题为例

对于前序遍历,也就是把中间的数先输出在输出左边的然后才是右边的。层序遍历(BFS)是二叉树遍历的基础算法,通过队列实现逐层访问节点,保证每层节点按从左到右顺序处理。依照上面的规律,后续遍历就是先输出左节点在输出右节点,最后输出根节点,所有称为后序。对于中序遍历,将根节点在中间输出,先输出左节点然后在输出根节点,最后输出右节点。对于层序遍历我们要用到队列来解决,如果对栈不清楚的可以去看看我的另外一篇。(即逐层地,从左到右访问所有节点)。给定一个二叉树的根节点。给你一棵二叉树的根节点。

m0_73426548的博客 1197

递归法和迭代法都必须掌握的二叉树三种DFS【Py/Java/C++三种语言详解】LeetCode每日一题240212【二叉树】LeetCode145、二叉树的后序遍历

有LeetCode算法/华为OD考试扣扣交流群可加可上全网独家的练习华子OD、大厂真题绿色聊天软件戳od1336了解算法冲刺训练。

weixin_48157259的博客 930

Python语言实现二叉树的前序、中序、后序和层序遍历

Python语言实现二叉树的前序、中序、后序和层序遍历

化身孤岛的鲸o的博客 1183

leetcode刷题01:二叉树的前序、中序、后序、层次遍历(python实现)

二叉树的前序、中序、后序、层次遍历 本文主要汇总leetcode中涉及到二叉树前、中、后、层次遍历的题目以及对应的思路和解答。 文章目录二叉树的前序、中序、后序、层次遍历144:二叉树的前序遍历递归实现迭代实现94:二叉树的中序遍历递归实现迭代实现145:二叉树的后序遍历递归实现迭代实现102:二叉树的层序遍历107:二叉树的层次遍历II 关于普通的前后中层次遍历: 目前我整理的有递归和迭代两种实现方式(前中后遍历) 递归和迭代两种思路都有套路可言,比如递归实现只需要改变一下代码的位置,而迭代涉及到栈的使用

ayangann915的博客 601

LeetCode 145. 二叉树的后序遍历 | Python

使用递归、迭代的方法,解决 LeetCode 《145. 二叉树的后序遍历》 问题

"大梦三千秋的博客 759

day20【代码随想录】二叉树的前序遍历、N叉树的前序遍历、二叉树的中序遍历、二叉树的后序遍历、N叉树的后序遍历

1、二叉树的前序遍历2、N叉树的前序遍历3、二叉树的中序遍历4、二叉树的后序遍历5、N叉树的后序遍历

qq_42338744的博客 895

递归法和迭代法都必须掌握的二叉树三种DFS【Py/Java/C++三种语言详解】LeetCode每日一题240211【二叉树】LeetCode144、二叉树的前序遍历

有LeetCode算法/华为OD考试扣扣交流群可加可上全网独家的练习华子OD、大厂真题绿色聊天软件戳od1336了解算法冲刺训练。

weixin_48157259的博客 909

【LeetCode算法题精讲】二叉树算法精讲:递归三要素方法论——前中后序遍历+ 最大深度+ 翻转二叉树

本文以递归三要素(参数与返回值、终止条件、单层递归逻辑)为主线,系统讲解了二叉树入门五道题(94/144/145/104/226),涵盖前中后序遍历、最大深度和翻转二叉树。通过递归与迭代双解法对比,结合BFS/DFS两种路线,深入分析了中序遍历的"处理与访问分离"特性及中序翻转陷阱。文章提供Java/Python/C++三语言实现,详解容器使用技巧,并通过对比表和图示展示核心思路。

2401_88352165的博客 669

DAY13||二叉树的递归遍历,迭代遍历,统一迭代法,层序遍历

二叉树需要掌握的内容图。

2301_79865280的博客 1461
上一篇: python验证二叉搜索树 LeetCode NO.98
下一篇: python 最近公共祖先在二叉树中和在二叉搜索树中 LeetCode No.236 No.235
GhostintheCode
博客等级 码龄8年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值