首页 > 试题广场 >

二叉树的后序遍历

[编程题]二叉树的后序遍历
  • 热度指数:68899 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
用递归的方法对给定的二叉树进行后序遍历。
例如:
给定的二叉树为{1,#,2,3},

返回[3,2,1].
示例1

输入

{1,#,2,3}

输出

[3,2,1]

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 sdhsih
发表于 2020-04-22 20:28:09
如果是前序遍历,我们的顺序是根节点,左节点,右节点。如果我们用一个栈来实现,可以这样考虑:先把根节点压入栈,在栈中有元素的时候循环:每次弹出栈顶元素,然后先压入栈顶元素的右边节点,再压入栈顶元素的左边节点。因为栈是先进后出,因此要先压入右边的节点,因此第二次执行while循环的时候,栈顶元素就是左节 展开全文
头像 _offer_qwq
发表于 2020-01-08 15:13:28
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), 展开全文
头像 牛客697564601号
发表于 2020-10-13 11:54:56
我就乖乖递归了 vector<int> postorderTraversal(TreeNode* root) { // write code here static vector<int> res; if(!root)r 展开全文
头像 一叶浮尘
发表于 2020-04-02 22:38:20
求给定的二叉树的后序遍历。例如:给定的二叉树为{1,#,2,3},用非递归的方法实现二叉树的后续遍历。之所以能用递归是因为具有栈的属性,因此在非递归的做法中往往要活用栈和队列这个数据结构。 优秀了,其实就是这么简单。用一个栈保存待加入result的节点,用另外一个栈保存当前节点访问的状态值,根据不同 展开全文
头像 恒成立
发表于 2021-03-27 20:34:46
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Sol 展开全文
头像 GreyPigeon
发表于 2021-11-03 16:06:45
* struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param 展开全文
头像 ywl0211
发表于 2021-10-25 17:10:43
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # # @param root TreeN 展开全文
头像 jing_zhong
发表于 2021-08-31 23:14:37
题目描述:用递归的方法对给定的二叉树进行后序遍历。例如:给定的二叉树为{1,#,2,3},返回[3,2,1].示例1:        输入:{1,#,2,3}     & 展开全文
头像 奶味拳师
发表于 2021-09-01 01:02:49
使用全局静态list存储数据。按照左右中向list中添加数字。 ArrayList<Integer> list = new ArrayList<Integer>(); public ArrayList<Integer> postorderTraversal 展开全文
头像 牛客808484225号
发表于 2022-08-08 09:49:03
/* 这个解法可能是最佳实践,思路清晰,易于理解。  * 核心思想是用栈做辅助空间,先从根往左一直入栈,直到为空,然后判断栈顶元素的右孩子,如果不为空且未被访问过,  * 则从它开始重复左孩子入栈的过程;否则说明此时栈顶为要访问的节点(因为左右孩子都是要么为空要么已访问过了), 展开全文