LeetCode 144. 二叉树的前序遍历(Binary Tree Preorder Traversal)
2024-09-03 09:56:03
题目描述
给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [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;
}
};
最新文章
- Javascript的原型链图
- linux下centos的网络连接
- asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现
- Task<;TResult>; 类
- CentOS源列表
- Function-两个日期大小比较
- Codeforces Gym 100425A Luggage Distribution 二分 数学
- 关于Windows azure从github上部署项目
- android 卸载程序、清除数据、停止服务用法
- 将java对象转成json字符串
- Java设计模式 (转)
- ES6 函数的扩展2
- Nginx (二) Nginx的反向代理负载均衡以及日志切割
- Java中循环声明变量方法
- Android为TV端助力 关于4.0之后不能直接获取SD卡外部存储路径的问题
- P3203 [HNOI2010]弹飞绵羊 —— 懒标记?分块?LCT?...FAQ orz
- notepad++64位添加plugin manager
- Leetcode 870. 优势洗牌
- Linux文件系统命令 touch/rm
- 基于Easyui框架的datagrid绑定数据,新增,修改,删除方法(四)
热门文章
- box-sizeing
- https://bbs.ichunqiu.com/thread-48915-1-1.html
- Nginx作为静态资源web服务之缓存原理
- python制作一个简单词云
- MongoDB 各个位版本下载地址
- VMwarevSphere Client 链接 vCenter Server中的主机,开启虚拟机提示:在主机当前连接状况下不允许执行该操作
- 余数之和BZOJ1257
- shutdown immediate 持久无法关闭数据库之解决方案
- IIS无法启动解决方案
- Java 对象序列化和反序列化 (实现 Serializable 接口)