题目描述

给定一个二叉树,返回它的 前序 遍历。

示例:

输入: [1,null,2,3]
1
\
2
/
3 输出: [1,2,3]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

解题思路

由于前序遍历的顺序是父节点->左孩子->右孩子,所以在遍历到某节点时,先输出该节点值,然后把该节点的右孩子入栈,接着访问左孩子,若左孩子为空,则访问栈顶结点。

代码

 /**
* 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> preorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> s;
TreeNode* node = root;
while(node || s.size()){
if(node == NULL){
node = s.top();
s.pop();
}
res.push_back(node->val);
if(node->right)
s.push(node->right);
node = node->left;
}
return res;
}
};

最新文章

  1. Javascript的原型链图
  2. linux下centos的网络连接
  3. asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现
  4. Task&lt;TResult&gt; 类
  5. CentOS源列表
  6. Function-两个日期大小比较
  7. Codeforces Gym 100425A Luggage Distribution 二分 数学
  8. 关于Windows azure从github上部署项目
  9. android 卸载程序、清除数据、停止服务用法
  10. 将java对象转成json字符串
  11. Java设计模式 (转)
  12. ES6 函数的扩展2
  13. Nginx (二) Nginx的反向代理负载均衡以及日志切割
  14. Java中循环声明变量方法
  15. Android为TV端助力 关于4.0之后不能直接获取SD卡外部存储路径的问题
  16. P3203 [HNOI2010]弹飞绵羊 —— 懒标记?分块?LCT?...FAQ orz
  17. notepad++64位添加plugin manager
  18. Leetcode 870. 优势洗牌
  19. Linux文件系统命令 touch/rm
  20. 基于Easyui框架的datagrid绑定数据,新增,修改,删除方法(四)

热门文章

  1. box-sizeing
  2. https://bbs.ichunqiu.com/thread-48915-1-1.html
  3. Nginx作为静态资源web服务之缓存原理
  4. python制作一个简单词云
  5. MongoDB 各个位版本下载地址
  6. VMwarevSphere Client 链接 vCenter Server中的主机,开启虚拟机提示:在主机当前连接状况下不允许执行该操作
  7. 余数之和BZOJ1257
  8. shutdown immediate 持久无法关闭数据库之解决方案
  9. IIS无法启动解决方案
  10. Java 对象序列化和反序列化 (实现 Serializable 接口)