二叉树的后序遍历
来源:互联网 发布:大学取消事业编制 知乎 编辑:程序博客网 时间:2024/05/29 19:19
1、问题描述
给出一棵二叉树,返回其节点值的后序遍历。给出一棵二叉树 {1,#,2,3},
1
\
2
/
3
返回 [3,2,1]
2、问题实现
与前序遍历、中序遍历类似。若二叉树为空,则空操作返回。否则后序遍历根节点的左子树,后序遍历根节点的右子树,访问根节点。
3、代码
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Postorder in vector which contains node values.
*/
public:
vector<int> postorderTraversal(TreeNode *root) {
// write your code here
vector<int> p;
if(root==NULL) return p; //结束条件为null
houxubianli(p,root);
return p;
}
private:
void houxubianli(vector<int>& p,TreeNode* root)
{
if(root==NULL)return;
houxubianli(p,root->left);
houxubianli(p,root->right);
p.push_back(root->val);
}
};
4、感想
利用递归进行后序遍历,用vector存放数值,需要再写一个后序遍历函数, 若用原函数递归,每次递归vector<int> p;都会初始化vector, 用原函数调用后序遍历函数,结束条件为NULL。
- 二叉树的后序遍历
- 二叉搜索树的后序遍历
- 二叉搜索树的后序遍历
- 二叉树的后序遍历
- 二叉搜索树的后序遍历
- 二叉树的后序遍历算法
- 题目:二叉树的后序遍历
- LintCode -- 二叉树的后序遍历
- Lintcode 二叉树的后序遍历
- 二叉搜索树的后序遍历
- LintCode:二叉树的后序遍历
- 二叉树的后序遍历
- 二叉查找树的后序遍历
- 二叉搜索树的后序遍历
- lintcode,二叉树的后序遍历
- 后序二叉线索树的遍历
- 【数据结构】二叉树的后序遍历
- LintCode-二叉树的后序遍历
- Mybatis和Hibernate
- git知识总结
- Web移动端Css Fixed方式的布局方案
- JS深入之趣味比较隐式转换(一)
- 51nod 1073 约瑟夫环(递推)
- 二叉树的后序遍历
- nyoj 20 吝啬的国度 (dfs)
- 鸟哥的Linux私房菜笔记一
- BZOJ3878 [Ahoi2014]奇怪的计算器 线段树
- Hibernate学习笔记(第三天)
- 解读Batch Normalization
- jstl 数字转换成字符串
- 覆盖技术,虚拟技术,并行技术,缓冲技术
- DSP 实验一(CCS操作实验)