二叉树的后序遍历

给出一棵二叉树,返回其节点值的后序遍历。

样例

给出一棵二叉树 {1,#,2,3},



返回 [3,2,1]

挑战

你能使用非递归实现么?

标签

递归 二叉树 二叉树遍历

code

/**
* 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> order;
if(root == NULL)
return order; stack<TreeNode*> s;
TreeNode *cur; //当前结点
TreeNode *pre=NULL; //前一次访问的结点
s.push(root); while(!s.empty()) {
cur=s.top(); //如果当前结点没有孩子结点或者孩子节点都已被访问过
if((cur->left==NULL&&cur->right==NULL)|| (pre!=NULL&&(pre==cur->left||pre==cur->right))) {
order.push_back(cur->val);
s.pop();
pre=cur;
}
else {
if(cur->right!=NULL)
s.push(cur->right);
if(cur->left!=NULL)
s.push(cur->left);
}
}
return order;
}
};

最新文章

  1. iphone 尺寸and字体
  2. Vue2.X的路由管理记录之 钩子函数(切割流水线)
  3. 【HTML5】浅析html使用SSE(Server-Sent Events)连接JSP
  4. POJ 2876 Cantoring Along
  5. 更新win7资源管理器
  6. clrscr( )用法
  7. USACO Chapter 1 解题总结
  8. URAL 1727. Znaika&amp;#39;s Magic Numbers(数学 vector)
  9. Java虚拟中内存分块
  10. Django signals机制的几个简单问题
  11. shell脚本-正则、grep、sed、awk
  12. (55)Wangdao.com第八天_JavaScript 字符串中使用 \u 输出Unicode字符
  13. 无需脑图 无需思维导图 看Word大纲视图
  14. Git使用:Linux(Ubuntu 14.04 x64)下安装Git并配置连接GitHub
  15. 客户端负载均衡Feign之三:Feign补充
  16. 项目构建工具gradle
  17. MyEclipse:详细使用教程
  18. Java实现各种内部排序算法
  19. 通过Class类获取对象实例
  20. Spring Boot 学习资料【m了以后看】(转)

热门文章

  1. mvc:interceptor拦截器使用
  2. c. 求阶乘和的方法(N的值不能太大)初学者
  3. 清华大学《C++语言程序设计基础》线上课程笔记04---指针
  4. C指针(3)——指向指针的指针(程序讲解)
  5. python 感叹号的作用
  6. Scala学习笔记(四)—— 数组
  7. 爬取 StackOverFlow 上有关于 Python 的问题
  8. LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他
  9. Ceph性能优化
  10. fiddler不经意的功能