LeetCode 145. 二叉树的后序遍历(递归)(迭代)(颜色标记法)
题目描述
给定一个二叉树,返回它的后序遍历
思路
详见链接
代码
递归
#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. 二叉树的后序遍历(递归)(迭代)(颜色标记法)相关推荐
- LeetCode 94. 二叉树的中序遍历(递归)(迭代)(颜色标记法)
题目描述 给定一个二叉树,返回它的后序遍历 思路 详见链接 代码 递归 #class TreeNode: # def __init__(self,x): # self.val = x # self.l ...
- LeetCode —— 145. 二叉树的后序遍历【递归与迭代】(Python)
给定一个二叉树,返回它的 后序 遍历. 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解法一:递归 # Definition for a binary tree node. # class Tr ...
- LeetCode 145 二叉树的后序遍历(非递归)
题目: 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 1.使用一 ...
- LeetCode 145. 二叉树的后序遍历(后序遍历总结)
文章目录 1. 题目信息 2. 解法 2.1 递归 2.2 循环,必须掌握 a. 单栈 b. 双栈解法 3. 前中后序总结 1. 题目信息 给定一个二叉树,返回它的 后序 遍历. 示例:输入: [1, ...
- [leetcode]145.二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 1.递归解法 class So ...
- Leetcode 145. 二叉树的后序遍历 (每日一题 20210930)
给定一个二叉树,返回它的 后序 遍历.示例:输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?链接:https://leetcod ...
- LeetCode 145 ——二叉树的后序遍历
1. 题目 2. 解答 2.1. 递归法 定义一个存放树中数据的向量 data,从根节点开始,如果节点不为空,那么 递归得到其左子树的数据向量 temp,将 temp 合并到 data 中去 递归得到 ...
- Leetcode题库 145.二叉树的后序遍历(递归 C实现)
文章目录 思路 代码 思路 1.左右非空则先记录左右, 最后在记录自身 2.迭代法,需要建立struct TreeNode stack,记录父节点,知道怎么写就行,不一定非要按照它说的那样(没写过的, ...
- 二叉树后序遍历_LeetCode算法145. 二叉树的后序遍历
leetcode LeetCode算法-145. 二叉树的后序遍历 145. 二叉树的后序遍历 题目 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / ...
最新文章
- OpenCV VideoCapture与捕获设备,视频文件或图像序列一起使用的实例
- dbeaver无法修改表数据_隐藏彩蛋:你知道python有一个内置的数据库吗?
- 【MySQL】MySQL常见的读写分离方法
- 介绍6款热门的SpringCloud微服务开源项目,总有适合你的!
- LeetCode(21)——合并两个有序链表(JavaScript)
- 查询当天交易总额最大的用户信息_场内场外交易
- 带有权限设置的Excel协同编辑
- 【十次方】十次方项目前期准备
- 苹果手机更改照片大小kb,苹果手机怎么把图片缩小 怎么用手机把图片缩小
- 苹果耳机无线真假测试软件,辨别苹果耳机真伪,看完这篇就够了
- java append concat_最佳实践/性能:将StringBuilder.append与String.concat混合使用
- 影响力最大化 IMRank 我心中的最优算法
- Android网络框架选用(示例,已实际运行)Retrofit,okhttp,volley
- 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
- 宝塔怎么看蜘蛛爬取日志
- Robomaster:大风车识别可视化(记录一下)
- 文件管理android2.3,Tomi文件管理器下载 v2.3.4 安卓版
- 远程控制网吧服务器,方便维修,电脑坏了不用愁,向日葵电脑远程维修省时又省力...
- K-Means集群算法
- JSP页面%@ ...%是 什么意思
热门文章
- Linux 内核里的数据结构——基数树
- EDA实验课课程笔记(三)——TCL脚本语言的学习1
- css修改输入框的placeholder颜色
- Jquery获取iframe中的元素
- Linux 用户(User)查询篇
- // 产生10到100随机数
- python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解
- 2020-02-06 asm内联汇编
- [笔记] 如何从不同扩展名的数字证书中提取明文信息? *.pem *.der *.crt *.cer *.key之间的区别是什么?...
- 图解java_图解 Java 中的数据结构及原理!