题目描述

给定一个二叉树,返回它的后序遍历

思路

详见链接

代码

递归

#class TreeNode:
#   def __init__(self,x):
#       self.val = x
#       self.left = None
#       self.right = None
class Solution:def postorderTraversal(self,root:TreeNode) -> List[int]:res = []def helper(root):if not root:return helper(root.left)helper(root.right)res.append(root.val)helper(root)return res

迭代

#class TreeNode:
#   def __init__(self,x):
#       self.val = x
#       self.left = None
#       self.right = None
class Solution:def postorderTraversal(self,root:TreeNode) -> List[int]:res = []if not root:return resstack = [root]while stack:node = stack.pop()res.append(node.val)if node.left:stack.append(node.left)if node.right:stack.append(node.right)return res[::-1]

颜色标记法

class TreeNode:def __init__(self,x):self.val = xself.left = Noneself.right = Noneclass Solution:def postorderTraversal(self,root:TreeNode):res = []WHITE , GRAY = 0 , 1stack = [(WHITE,root)]while stack:(color,node) = stack.pop()if node:if color == WHITE:stack.append((GRAY,node))stack.append((WHITE,node.right))stack.append((WHITE,node.left))else:res.append(node.val)return resdef stringToTreeNode(input):input = input.strip()input = input[1:-1]if not input:return NoneinputValues = [s.strip() for s in input.split(',')]root = TreeNode(int(inputValues[0]))nodeQueue = [root]front = 0index = 1while index < len(inputValues):node = nodeQueue[front]front = front + 1item = inputValues[index]index = index + 1if item != "null":leftNumber = int(item)node.left = TreeNode(leftNumber)nodeQueue.append(node.left)if index >= len(inputValues):breakitem = inputValues[index]index = index + 1if item != "null":rightNumber = int(item)node.right = TreeNode(rightNumber)nodeQueue.append(node.right)return rootlist = input("输入:")
b = stringToTreeNode(list)
test = Solution()
test.postorderTraversal(b)

效果

LeetCode 145. 二叉树的后序遍历(递归)(迭代)(颜色标记法)相关推荐

  1. LeetCode 94. 二叉树的中序遍历(递归)(迭代)(颜色标记法)

    题目描述 给定一个二叉树,返回它的后序遍历 思路 详见链接 代码 递归 #class TreeNode: # def __init__(self,x): # self.val = x # self.l ...

  2. LeetCode —— 145. 二叉树的后序遍历【递归与迭代】(Python)

    给定一个二叉树,返回它的 后序 遍历. 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解法一:递归 # Definition for a binary tree node. # class Tr ...

  3. LeetCode 145 二叉树的后序遍历(非递归)

    题目: 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 1.使用一 ...

  4. LeetCode 145. 二叉树的后序遍历(后序遍历总结)

    文章目录 1. 题目信息 2. 解法 2.1 递归 2.2 循环,必须掌握 a. 单栈 b. 双栈解法 3. 前中后序总结 1. 题目信息 给定一个二叉树,返回它的 后序 遍历. 示例:输入: [1, ...

  5. [leetcode]145.二叉树的后序遍历

    给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 1.递归解法 class So ...

  6. Leetcode 145. 二叉树的后序遍历 (每日一题 20210930)

    给定一个二叉树,返回它的 后序 遍历.示例:输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?链接:https://leetcod ...

  7. LeetCode 145 ——二叉树的后序遍历

    1. 题目 2. 解答 2.1. 递归法 定义一个存放树中数据的向量 data,从根节点开始,如果节点不为空,那么 递归得到其左子树的数据向量 temp,将 temp 合并到 data 中去 递归得到 ...

  8. Leetcode题库 145.二叉树的后序遍历(递归 C实现)

    文章目录 思路 代码 思路 1.左右非空则先记录左右, 最后在记录自身 2.迭代法,需要建立struct TreeNode stack,记录父节点,知道怎么写就行,不一定非要按照它说的那样(没写过的, ...

  9. 二叉树后序遍历_LeetCode算法145. 二叉树的后序遍历

    leetcode LeetCode算法-145. 二叉树的后序遍历 145. 二叉树的后序遍历 题目 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / ...

最新文章

  1. OpenCV VideoCapture与捕获设备,视频文件或图像序列一起使用的实例
  2. dbeaver无法修改表数据_隐藏彩蛋:你知道python有一个内置的数据库吗?
  3. 【MySQL】MySQL常见的读写分离方法
  4. 介绍6款热门的SpringCloud微服务开源项目,总有适合你的!
  5. LeetCode(21)——合并两个有序链表(JavaScript)
  6. 查询当天交易总额最大的用户信息_场内场外交易
  7. 带有权限设置的Excel协同编辑
  8. 【十次方】十次方项目前期准备
  9. 苹果手机更改照片大小kb,苹果手机怎么把图片缩小 怎么用手机把图片缩小
  10. 苹果耳机无线真假测试软件,辨别苹果耳机真伪,看完这篇就够了
  11. java append concat_最佳实践/性能:将StringBuilder.append与String.concat混合使用
  12. 影响力最大化 IMRank 我心中的最优算法
  13. Android网络框架选用(示例,已实际运行)Retrofit,okhttp,volley
  14. 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
  15. 宝塔怎么看蜘蛛爬取日志
  16. Robomaster:大风车识别可视化(记录一下)
  17. 文件管理android2.3,Tomi文件管理器下载 v2.3.4 安卓版
  18. 远程控制网吧服务器,方便维修,电脑坏了不用愁,向日葵电脑远程维修省时又省力...
  19. K-Means集群算法
  20. JSP页面%@ ...%是 什么意思

热门文章

  1. Linux 内核里的数据结构——基数树
  2. EDA实验课课程笔记(三)——TCL脚本语言的学习1
  3. css修改输入框的placeholder颜色
  4. Jquery获取iframe中的元素
  5. Linux 用户(User)查询篇
  6. // 产生10到100随机数
  7. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解
  8. 2020-02-06 asm内联汇编
  9. [笔记] 如何从不同扩展名的数字证书中提取明文信息? *.pem *.der *.crt *.cer *.key之间的区别是什么?...
  10. 图解java_图解 Java 中的数据结构及原理!