解决Python3中二叉树前序遍历的迭代问题
作者:amboke 发布时间:2022-04-11 09:05:24
标签:Python,二叉树,遍历
Python3中二叉树前序遍历的迭代解决方案
A Binary Tree
二叉树是分层数据结构,其中每个父节点最多有 2 个子节点。在今天的文章中,我们将讨论一个在大量技术编码面试中出现的重要主题。
问题陈述 : 鉴于 根
二叉树,返回 其节点值的前序遍历 . 提供迭代解决方案而不是递归解决方案。
解决方案:
预购遍历 在二叉树中按以下顺序发生:
先访问根
遍历左子树
遍历右子树
为了用迭代解决方案解决这个问题,我们必须实现 堆 数据结构。这是一种非线性数据结构,其中操作按 LIFO(后进先出)顺序执行。我们回答的方法很简单,如下所示:
我们将初始化两个列表 IE 一个承载输出,另一个充当我们的堆栈数据结构。堆栈将使用二叉树的根值进行初始化。
然后,只要堆栈有值,我们就会在堆栈上执行一个 while 循环。在循环中,依次进行以下操作:
删除(弹出)堆栈中最顶部的值(根节点)并将其附加到输出列表
将弹出值的右孩子压入堆栈
将弹出值的左孩子压入堆栈
返回循环结束时的输出列表
作为这个过程的结果,将首先访问根值,然后访问左子树,最后访问右子树值。
需要注意的是,右孩子首先被推入堆栈,然后是左孩子。这是因为堆栈的 LIFO 特性。这样做将允许我们先访问左孩子,然后再访问右孩子。
说话很便宜,给我看代码:
# 二叉树节点的定义 类树节点:
def __init__(self, val=0, left=None, right=None):
自我.val = val
self.left = 左
self.right = 对 类解决方案:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
输出,节点堆栈 = [],[根]
而节点堆栈:
节点 = nodestack.pop()
if node: # preorder: root -> left -> right
output.append(node.val)
nodestack.append(node.right)
nodestack.append(node.left)
返回输出
如果这篇文章对您有帮助,请随意喜欢并订阅我的时事通讯,以获取更多 Python 中的 DSA 内容。
来源:https://www.cnblogs.com/amboke/p/16660367.html


猜你喜欢
- *在起初pip install matplotlib时,主动安装到当时最新版本(matplotlib==3.3.2),在StackOverf
- 近几年来,nosql大行其道,json更是火的一塌糊涂,作为数据库的元老,mysql在5.7版本中添加了对json数据的支持。这片博客主要介
- 如果你正从你的用户那里收集信息, 没有比网页表单更简单和直接的办法了。一份有良好设计的表单可以提供有价值的信息, 相反, 他们有可能把用户吓
- 1.Access数据库的DSN-less连接方法: set adocon=Server.Createobject(&q
- Tuple 元组元组的定义和使用元组的定义:元组是有序的不可变对象集合元组使用小括号包围,各个对象之间使用逗号分隔元组是异构的,可以包含多种
- <html> <head> <title>获取ACCESS数据库表名 -&
- time简介世界上第一台计算机操作系统Unix是诞生于1970年,然后就开始了计算机的时间计算,所以我们计算机的时间是开始于1970年1月1
- 今早打开 腾讯ISD的博客 ,看到一篇新的文章,《迷你屋视觉规范简介》,赶紧看了来学习。不过给我抓到问题咯,臭鱼不介意我在这说下吧:这套规范
- JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用
- 本文使用的是最新的FCKeditor 2.3.1版本 官方网站下载: http://ckeditor.com/download[建议直接在官
- 本文实例讲述了Python使用Matplotlib实现雨点图动画效果的方法。分享给大家供大家参考,具体如下:关键点win10安装ffmpeg
- 计时器setTimeout()和setInterval()两个都是js的计时功能的函数两个有些区别。 setTimeout(): 在js手册
- 又是一年春来到,看各大网站的新年Logo也成为了我们必不可少的新年餐点,为此,我们特别整理了部分网站的新年Logo秀,如果你看到了更加有意思
- 引用起初我会下意识的回答,直接 v == nil 进行判断不就好了吗?然后翻阅了很多资料终于大致搞定里面的道道.例子请看下面这段代码,可以先
- 一、什么是sql注入呢? 所谓SQL注入,就是
- 最近基于selenium写了一个python小工具,记录下学习记录,自己运行的环境是Ubuntu 14.04.4, Python 2.7,C
- 链表由一系列不必在内存中相连的结构构成,这些对象按线性顺序排序。每个结构含有表元素和指向后继元素的指针。最后一个单元的指针指向NULL。为了
- 1 简介DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。或许说它可能有点像matlab的矩
- 本文实例为大家分享了Python实现用户名和密码登录的具体代码,供大家参考,具体内容如下功能登录及注册,密码错误多次后验证码确认说明初次运行
- 想要一个这玩意,可是找了网上许多着色器,要么是兼容性成问题,要么是匹配不精确,比如说:1、注释里包含字符串、关键词,类似于:/* xxxx&