二叉树的统一迭代法#思路

前序遍历:

class Solution:

    def preorderTraversal(self, root: TreeNode) -> List[int]:

       result=[]

       st=[]

       if root:

           st.append(root)

       while st:

           node=st.pop()

           if node != None:

               if node.right:

                   st.append(node.right)

               if node.left:

                   st.append(node.left)

               st.append(node)

               st.append(None)

           else:

               node=st.pop()

               result.append(node.val)

       return result

中序遍历:

class Solution:

    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:

        result=[]

        st=[]

        if root:

            st.append(root)

        while st:

            node=st.pop()

            if node != None:

                if node.right:

                    st.append(node.right)

                st.append(node)

                st.append(None)

                if node.left:

                    st.append(node.left)

            else:

                node=st.pop()

                result.append(node.val)

        return result

后序遍历:

class Solution:

    def postorderTraversal(self,root:TreeNode) ->List[int]:

        result=[]

        st=[]

        if root:

            st.append(root)

        while st:

            node=st.pop()

            if node != None:

                st.append(node)

                st.append(None)

                if node.right:

                   st.append(node.right)

                if node.left:

                   st.append(node.left)

            else:

                 node=st.pop()

                 result.append(node.val)

        return result


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/688271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git的常用命令有哪些?

Git 是一个流行的分布式版本控制系统&#xff0c;用于跟踪文件的变化、协作开发和管理代码。以下是一些常用的 Git 命令&#xff1a; 创建和克隆仓库&#xff1a; git init&#xff1a;在当前目录初始化一个新的 Git 仓库。git clone <仓库URL>&#xff1a;克隆一个远程仓…

【Java EE初阶十六】网络原理(一)

在网络原理中主要学习TCP/IP四层模型中的重点网络协议 1. 应用层 1.1 应用程序与协议 应用层是和程序员接触最密切的&#xff1b; 应用程序&#xff1a;在应用层这里&#xff0c;很多时候都是程序员自定义应用层协议&#xff08;步骤&#xff1a;1、根据需求&#xff0c;明确…

log4net的使用步骤

log4net的使用步骤 Log4net是一个基于.NET平台的开源日志记录组件&#xff0c;它可以帮助开发人员在应用程序中添加日志记录功能&#xff0c;支持多种日志级别&#xff0c;如DEBUG、INFO、WARN、ERROR等&#xff0c;这使得开发人员可以根据需要灵活地控制日志的输出。下面是lo…

SPSSAU【文本分析】|我的词库

我的词库 文本分析时&#xff0c;可能涉及到一些新词&#xff0c;比如‘内卷’&#xff0c;这个词很可能在词典中并未出现过&#xff0c;词库也不认识它。但研究者自己认识它&#xff0c;此时可将该词纳入到新词词库中&#xff0c;让系统统计词频等信息时也对该词进行统计。当…

【监控】spring actuator源码速读

目录 1.前言 2.先搂一眼EndPoint 3.EndPoint如何被注入 4.EndPoint如何被暴露 4.1.如何通过http暴露 4.2.如何通过jmx暴露 5.EndPoint是怎么实现监控能力的 6.知道这些的意义是什么 1.前言 版本&#xff1a;spring-boot-starter-actuator 2.6.3 阅读源码一定要带着疑…

小迪安全26WEB 攻防-通用漏洞SQL 注入 SqlmapOracleMongodbDB2 等

#知识点&#xff1a; 1、数据库注入-Oracle&Mongodb 2、数据库注入-DB2&SQLite&Sybase 3、SQL 注入神器-SQLMAP 安装使用拓展 数据库注入&#xff1a; 数据库注入-联合猜解-Oracle&Mongodb 1.Oracle数据库一般会在java上执行 参考:https://www.cnblog…

C/C++与汇编交互总结

1.汇编当中可以调用C函数&#xff0c;只需要"IMPORT"一下即可&#xff0c;如&#xff1a; change_vari_c PROCPUSH {R0,R1,LR}IMPORT core_res_cIMPORT temp_func_retEXPORT change_vari_cBL temp_func_retLDR R1,core_res_cSTR R0,[R1]POP {R0,R1,PC}ENDP 如果该C…

Rust HashMap详解及单词统计示例

在Rust中&#xff0c;HashMap是一种非常有用的数据结构&#xff0c;用于存储键值对。本文将深入介绍HashMap的特性&#xff0c;以及通过一个单词统计的例子展示其用法。 HashMap简介 HashMap是Rust标准库提供的用于存储键值对的数据结构。它允许通过键快速查找对应的值&#…

图数据库 之 Neo4j - 应用场景1(6)

Neo4j是一种图数据库&#xff0c;它专注于处理关系数据密集型的问题。由于其图结构的特性&#xff0c;Neo4j能够高效地存储、查询和分析连接数据。 以下是一些常见的Neo4j应用场景&#xff1a; 社交网络分析&#xff1a;通过建模和分析人际关系&#xff0c;可以揭示社交网络中…

PTA | Wifi密码

下面是微博上流传的一张照片&#xff1a;“各位亲爱的同学们&#xff0c;鉴于大家有时需要使用 wifi&#xff0c;又怕耽误亲们的学习&#xff0c;现将 wifi 密码设置为下列数学题答案&#xff1a;A-1&#xff1b;B-2&#xff1b;C-3&#xff1b;D-4&#xff1b;请同学们自己作答…

【详解】图的概念和存储结构(邻接矩阵,邻接表)

目录 图的基本概念&#xff1a; 图的存储结构 邻接矩阵&#xff08;GraphByMatrix&#xff09;&#xff1a; 基本参数&#xff1a; 初始化&#xff1a; 获取顶点元素在其数组中的下标 &#xff1a; 添加边和权重&#xff1a; 获取顶点的度&#xff1a; 打印图&#xf…

Unity所有关于旋转的方法详解

前言&#xff1a;欧拉角和四元数的简单描述 我们在Inspector面板上看到的rotation其实是欧拉角&#xff0c; 我们将Inspector面板设置成Debug模式&#xff0c;此时看到的local Rotation才是四元数。 Unity中的欧拉旋转是按照Z-X-Y顺规执行的旋转&#xff0c;一组欧拉旋转过程中…

【HarmonyOS】鸿蒙Arkts开发从入门到实战【持续更新】

鸿蒙Arkts开发从入门到实战目录 1. 工具安装 ArkTs 2.1 基础语法 2.2 状态管理 2.3 渲染控制 2.4 页面路由 ArkUI的基础类组件使用 3.1 Image组件 3.2 Text组件 3.3 TextInput组件 3.4 Button组件 3.5 Slider组件 3.6 Video组件 3.7 自定义组件 3.8 气泡提示 3.9 菜单 Stage模…

RibbonBar RibbonPage切换事件

在开发的过程中&#xff0c;我们会用到点击切换page&#xff0c;来响应对应的事件&#xff0c;例如以下事件&#xff1a; 头文件中&#xff1a; void ribboncurrentPageIndexChanged(int index); 实现文件中&#xff1a; connect(ribbonBar(), SIGNAL(currentPageIndexChang…

[力扣 Hot100]Day29 删除链表的倒数第 N 个结点

题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 出处 思路 两个指针间隔n&#xff0c;一趟遍历解决。 代码 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* phead;ListNode* …

【数据库】Mysql索引

1、什么是索引&#xff1f;为什么要用索引&#xff1f; 1.1、索引的含义 数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询&#xff0c;更新数据库中表的数据。索引的实现通常使用B树和变种的B树&#xff08;MySQL常用的索引就是B树&am…

跟着pink老师前端入门教程(JavaScript)-day03

四、常量 概念&#xff1a;使用 const 声明的变量称为“常量”。 使用场景&#xff1a;当某个变量永远不会改变的时候&#xff0c;就可以使用 const 来声明&#xff0c;而不是let。 命名规范&#xff1a;和变量一致 常量使用&#xff1a; 注意&#xff1a;常量不允许重新…

stable diffusion webui学习总结(3):参数设置

一、2.5D偏卡通风格参数设置&#xff1a; 步骤1、文生图 模型&#xff1a;darkSushiMixMix VAE&#xff1a;vae-ft-mse-840000-ema-pruned 正面提示词&#xff1a;(masterpiece, high quality, highres,illustration),blurry background,[(white background:1.2)::5],(see-…

数据库索引面试的相关问题

查看索引的执行计划 索引失效的情况 1、索引列上做了计算&#xff0c;函数&#xff0c;类型转换等操作。索引失效是因为查询过程需要扫描整个索引并回表。代价高于直接全表扫描。 Like匹配使用了前缀匹配符“%abc” 字符串不加引号导致类型转换。 原因&#xff1a; 常见索…

阿里云香港轻量应用服务器网络线路cn2?

阿里云香港轻量应用服务器是什么线路&#xff1f;不是cn2。 阿里云香港轻量服务器是cn2吗&#xff1f;香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器&#xff0c;通过mtr traceroute测试了一下&#xff0c;最后一跳是202.97开头的ip&#xff0c;1…