LeetCode 145. Binary Tree Postorder Traversal--后序遍历--先序遍历反向输出--递归,迭代--C++,Python解法
题目地址:Binary Tree Postorder Traversal - LeetCode
Given a binary tree, return the postorder traversal of its nodes’ values.
Example:
Input: [1,null,2,3]1\2/3Output: [3,2,1]
Follow up: Recursive solution is trivial, could you do it iteratively?
经典的二叉树后续遍历,最简单的递归做法。
Python解法如下:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def helper(root, l):if root is None:returnhelper(root.left, l)helper(root.right, l)l.append(root.val)l = []helper(root, l)return l
迭代做法要麻烦一点,不容易想到。
比较好的做法是先序遍历的结果反向输出。
Python解法如下:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:if root is None:return []stack, output = [root, ], []while stack:root = stack.pop()output.append(root.val)if root.left is not None:stack.append(root.left)if root.right is not None:stack.append(root.right)return output[::-1]
时间复杂度为O(n),空间复杂度为O(1)。
C++解法如下:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:vector<int> postorderTraversal(TreeNode *root) {vector<int> result;stack<TreeNode *> l;if (root == nullptr) {return result;}l.push(root);while (!l.empty()) {auto curr = l.top();l.pop();result.push_back(curr->val);if (curr->left != nullptr) {l.push(curr->left);}if (curr->right != nullptr) {l.push(curr->right);}}std::reverse(result.begin(), result.end());return result;}
};
LeetCode 145. Binary Tree Postorder Traversal--后序遍历--先序遍历反向输出--递归,迭代--C++,Python解法相关推荐
- 【二叉树的迭代版后序遍历】LeetCode 145. Binary Tree Postorder Traversal
LeetCode 145. Binary Tree Postorder Traversal Solution1:递归版答案 二叉树的后序遍历递归版是很简单的,关键是迭代版的代码既难理解又难写!但听了花 ...
- LeetCode 145. Binary Tree Postorder Traversal
原题链接在这里:https://leetcode.com/problems/binary-tree-postorder-traversal/ 题目: Given a binary tree, retu ...
- LeetCode:145. Binary Tree Postorder Traversal
总共想出了四种方法来做. 第一种是递归,不说了.后面集中都是迭代. 第二种是使用一个栈,而且借助一个set来记录哪些node是访问过它的子节点的,防止重复访问.缺点是需要额外的set的空间 class ...
- 145. Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...
- Leetcode 之Binary Tree Postorder Traversal(44)
后序遍历,比先序和中序都要复杂.访问一个结点前,需要先判断其右孩子是否被访问过.如果是,则可以访问该结点:否则,需要先处理右子树. vector<int> postorderTravers ...
- 145. Binary Tree Postorder Traversal 二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? DFS 今天这道题比较简单,直 ...
- 【二叉树迭代版中序遍历】LeetCode 94. Binary Tree Inorder Traversal
LeetCode 94. Binary Tree Inorder Traversal Solution1:递归版 二叉树的中序遍历递归版是很简单的,中序遍历的迭代版需要特殊记一下! 迭代版链接:htt ...
- 5. Binary Tree Postorder Traversal
Binary Tree Postorder Traversal Given a binary tree, return the postorder traversal of its nodes' va ...
- 【二叉树迭代版前序遍历】LeetCode 144. Binary Tree Preorder Traversal
LeetCode 144. Binary Tree Preorder Traversal Solution1:递归版 二叉树的前序遍历递归版是很简单的,前序遍历的迭代版相对是最容易理解的. 迭代版链接 ...
最新文章
- 关于qte illegal instruction的一些心得
- python函数式编程读取数据时出现错误_写 Python 代码不可不知的函数式编程技术...
- oracle 存储过程 输入,Oracle 存储过程加密方法
- ubuntu在线安装和卸载libusb
- 父子沪c转大牌过户_机动车异地过户(转籍)
- VGG网络结构(二)
- 实数在java中的表示,java - 如何在Z3(Java)中从模型中获取实数值作为小数(双精度)? - SO中文参考 - www.soinside.com...
- 日常踩坑:python的dlib库安装不成功,版本对应问题
- python练手程序_写的python练习程序
- linux iptables添加mysql访问
- java+log4j+是异步吗_log4j2用asyncRoot配置异步日志是如何使用disruptor
- 浙江大学公共管理学院与阿里云计算有限公司达成战略合作 | 凌云时刻
- 手机qq怎么添加相册表情包_手机qq怎么制作表情包
- php公众号模板在哪,微信公众号页面模板在哪里设置的?微信公众号页面模板怎么设置?...
- R Fisher精确检验
- 两年的前端程序员的反省与总结
- /hv/hv_go.h:14:27: fatal error: metslib/mets.hh: No such file or director解决办法
- 怎么选择自己合适的LED驱动IC?
- 【小程序开发原创】小程序裁剪图片上传头像,二维码源码
- Gabor滤波器特征提取原理讲解及c++实现
热门文章
- News | 经有限数据研究显示瑞德西韦有望治疗冠状病毒患者
- RDKit | 可视化分子来自于xyz文件
- livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程
- pip 20.3 新版本发布!即将抛弃 Python 2.x
- 海南大学植物保护学院刘铜教授课题组招聘简介
- Microbiome:宏基因组揭示冻土带、温带草原和热带土壤抗性的特征
- TEE综述:植物—土壤反馈(PSF):自然和农业科学间的桥梁
- Nature:原来益生菌是这么搞定致病菌的
- Cell: 为了PK抗生素而服用益生菌?后果竟然如此严重
- 轻松看懂机器学习十大常用算法