思路:

1. 使用列表保存结果;

2. 使用栈(列表实现)存储结点;

3. 当根结点存在,保存结果,根结点入栈;

4. 将根结点指向左子树;

5. 根结点不存在,栈顶元素出栈,并将根结点指向栈顶元素的右子树;

6. 重复步骤3-6,直到栈空。

LeetCode: 144. Binary Tree Preorder Traversal

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution(object):def preorderTraversal(self, root):""":type root: TreeNode:rtype: List[int]"""ret = []stack = []while root or stack:while root:ret.append(root.val)stack.append(root)root = root.leftif stack:t = stack.pop()root = t.rightreturn ret

转载于:https://www.cnblogs.com/qiaojushuang/p/7862930.html

Python实现二叉树的非递归先序遍历相关推荐

  1. 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树

    import java.util.Stack;public class Front {//非递归前序遍历public void front(TreeNode node) {Stack<TreeN ...

  2. 二叉树的非递归后序遍历(双栈法和双指针法,有图有真相)

    一,前言 本文是原创作品,可能存在不足,欢迎大家指正,礼貌交流,感激不尽. 二,思路 二叉树后序遍历不同于前序遍历和中序遍历,后序遍历是三者之间最难的.下面就让我们来梳理一下代码的逻辑,看看如何轻松地 ...

  3. LeetCode:二叉树的非递归中序遍历

    第一次动手写二叉树的,有点小激动,64行的if花了点时间,上传leetcode一次点亮~~~ 1 /* inorder traversal binary tree */ 2 #include < ...

  4. 二叉树非递归先序遍历

    二叉树的递归先序遍历很简单,假设二叉树的结点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 ...

  5. 二叉树路径应用举例(基于非递归后序遍历)

    #include "stdafx.h" #include <iostream> #include <fstream>using namespace std; ...

  6. 二叉树非递归后序遍历算法的一种简单思路

    首先从简单的例子开始 1 2 3 上图二叉树的后序遍历序列是"231", 颠倒一下就是"132", 而其前序遍历是"123" 有什么发现? ...

  7. 数据结构之---非递归中序遍历二叉树

    二叉树中序非递归遍历算法实现 大家好,我是逝去的粒子,从今天起,我将尝试着数据结构从0开始学习分享,此篇文章作为试验,一方面可以为自己做笔记防止遗忘,另一方面希望可以帮助大家.不废话,正式开始. 1. ...

  8. 二叉树非递归后序遍历算法(C语言)

    二叉树非递归后序遍历算法(C语言) 二叉树后序遍历的规律:左右根 后序非递归遍历中,访问根(子根)结点有两种情况 ①:遍历完左子树,需要遍历右子树,需要从栈中访问最顶上的根(子根)结点从而得到右子树的 ...

  9. 非递归先序遍历二叉树总结(3种方法)

    算法 非递归先序遍历二叉树总结(3种方法) @author:Jingdai @date:2020.12.03 传送门 非递归中序遍历二叉树 非递归后序遍历二叉树 递归先序遍历二叉树非常的简单,但是面试 ...

最新文章

  1. 面向对象三大特性一一封装(encapsulation)
  2. 解决yum 不能更新问题 :yum 报错Loaded plugins: fastestmirror, refresh-packagekit, security
  3. Python数据类型中的字典-创建和基本操作
  4. centos snmp配置_如何在CentOS系统中安装配置SNMP服务
  5. MySQL同表关联的id替换名称_MySQL JOIN用另一个表中的值替换ID
  6. 2021-05-19 Schur补引理及证明
  7. golang中的go mod开发
  8. 我的Thinkpad T410最近老是出Fan error
  9. 10G_Ethernet_04 10G Ethernet Subsystem IP 的快速验证(万兆以太网IP的快速验证)
  10. 10.15 lzxkj
  11. 创建 Oracle 物理备用服务器
  12. E/Trace: error opening trace file: No such file or directory
  13. HDU2151 Worm【DP】
  14. 用ajax向处理页面传送路径问题解决方法
  15. 基于词典和弱标注信息的电影评论情感分析系统
  16. 微信小程序添加字体图标
  17. java web对cpu要求_java web服务器cpu占用过高的处理
  18. mbr分区磁盘如何转换成gpt分区磁盘?
  19. c语言编程照抄能学好吗,电子信息类专业学生必看:一位老电子工程师十年感悟...
  20. 地对地导弹地对地导弹

热门文章

  1. Annotation之二:@Inherited注解继承情况
  2. WPF简单的口算案例
  3. Sql Server 2005如何设置连接加密
  4. [原创]我的作品:我的迷宫小游戏Java版本
  5. 遨游3.0 RC 版公布
  6. WQL Analyzer V1.1(WMI查询分析器)
  7. hive清空外表数据
  8. Flink SQL Client方言切换与datagen->Hive(DDL形式+streaming形式)
  9. ubuntu20.04运行海商王2
  10. 大数据发行版本+组件中的竞品/等同地位关系(持续更新中)