这道题是LeetCode里的第144道题。

题目要求:

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

示例:

输入: [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) {
stack<TreeNode*>st;//保存上一层的节点
TreeNode *pt;//指针
vector<int>res;//结果
if(root==NULL)
return res;
pt=root;
while(pt!=NULL||st.size()!=0){
while(pt!=NULL){//遍历完所有的左子树,同时入栈保存顺序
st.push(pt);
res.push_back(pt->val);//储存结果
pt=pt->left;
}
pt=st.top();//返回上一层
st.pop();
pt=pt->right;//右子树
}
return res;
}
};

提交结果:

个人总结:

先左后右,推荐和中序遍历后序遍历一起看,比较一下代码的不同。

最新文章

  1. json的场景应用与实战
  2. Android Studio启动模拟器
  3. 设计模式之构建者模式(Builder):初步理解
  4. 【JAVA多线程中使用的方法】
  5. MVC+EF 自定义唯一性验证
  6. java从命令行接收多个数字,求和之后输出结果
  7. SQL 去除小数点后无效 0 的方法
  8. mysql的面试试题
  9. JavaScript 部分对象方法记叙 ing...
  10. Android查缺补漏(线程篇)-- IntentService的源码浅析
  11. 环境配置 mac安装bazel
  12. css基础教程
  13. 联想Y7000安装Ubuntu16.04/Win10双系统,wifi问题,显卡驱动和CUDA10安装
  14. FTP服务-filezilla server 配置
  15. SSM项目layui分页实例
  16. configparser模块来生成和修改配置文件
  17. Ubuntu 16.04 compare 软件安装
  18. Kprobe
  19. java将SSL证书导入系统密钥库
  20. ios错误ignoring file xxx missing required architecture x86_64 in file

热门文章

  1. PHP针对二维数组无限遍历变形研究
  2. socket tcp使用recv接收数据时,返回errno错误代码88
  3. 如何用Windows PowerShell替换命令提示符
  4. JSON 序列化格式
  5. python基础教程总结12——数据库
  6. 监控服务端口状态python脚本
  7. 换个语言学一下 Golang (3)——数据类型
  8. 在DataGridView控件中验证数据输入
  9. openstack nova fail to create vm
  10. 题解 P5051 【[COCI2017-2018#7] Timovi】