【LeetCode】Binary Tree Preorder Traversal(二叉树的前序遍历)
这道题是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;
    }
};
提交结果:

个人总结:
先左后右,推荐和中序遍历、后序遍历一起看,比较一下代码的不同。
【LeetCode】Binary Tree Preorder Traversal(二叉树的前序遍历)的更多相关文章
- lintcode :Binary Tree Preorder Traversal 二叉树的前序遍历
		
题目: 二叉树的前序遍历 给出一棵二叉树,返回其节点值的前序遍历. 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]. 挑战 你能使用非递归实现么? 解题: 通过递 ...
 - LeetCode 144. Binary Tree Preorder Traversal 二叉树的前序遍历 C++
		
Given a binary tree, return the preorder traversal of its nodes' values. Example: Input: [,,] \ / Ou ...
 - 144 Binary Tree Preorder Traversal 二叉树的前序遍历
		
给定一棵二叉树,返回其节点值的前序遍历.例如:给定二叉树[1,null,2,3], 1 \ 2 / 3返回 [1,2,3].注意: 递归方法很简单,你可以使用迭代方法来解决 ...
 - Leetcode144. Binary Tree Preorder Traversal二叉树的前序遍历
		
给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归: class S ...
 - LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium
		
题目:Binary Tree Preorder Traversal 二叉树的前序遍历,同样使用栈来解,代码如下: struct TreeNode { int val; TreeNode* left; ...
 - C++版 - LeetCode 144. Binary Tree Preorder Traversal (二叉树先根序遍历,非递归)
		
144. Binary Tree Preorder Traversal Difficulty: Medium Given a binary tree, return the preorder trav ...
 - [LeetCode] Binary Tree Preorder Traversal 二叉树的先序遍历
		
Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tr ...
 - [Leetcode] Binary tree postorder traversal二叉树后序遍历
		
Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...
 - [Leetcode] Binary tree inorder traversal二叉树中序遍历
		
Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...
 
随机推荐
- JFinal教程:JFinal极速开发企业实战百集JFinal视频教程发布
			
课程名称:JFinal极速开发企业实战 课程长度:100课时 课程作者:小木(909854136) 课程地址:http://edu.csdn.net/course/detail/1968 官网网址:h ...
 - nodeis 避免回调引起的栈溢出 Maximum call stack size exceeded
			
//如果这样写,会发生栈溢出 var i = 1; function isEven() { console.log(i++); // return isEven(); retu ...
 - 拷贝文件至U盘——提示:对于目标系统文件过大
			
一.问题描述: 在制作U盘启动工具的时候,通常制作出的U盘文件系统是FAT32,但是当需要拷贝进去的系统文件大小超过4GB时,就会提示上述问题 二.解决办法: 1.格式化U盘,在格式化界面“文件系统” ...
 - 两个div并列居中显示——当display:inline;时,div的宽高不起作用即两个div重叠显示
			
解决办法: 将display设置为:inline-block
 - SAP标准培训课程C4C10学习笔记(二)第二单元
			
第二单元目录: SAP Cloud for Customer的项目实施分为4个阶段: 这四个阶段的详细介绍在SAP社区上这篇博文里: SAP Hybrid Project implementation ...
 - 【转】HTTP Live Streaming直播(iOS直播)技术分析与实现
			
HTTP Live Streaming直播(iOS直播)技术分析与实现 不经意间发现,大半年没写博客了,自觉汗颜.实则2012后半年,家中的事一样接着一样发生,实在是没有时间.快过年了,总算忙里偷闲, ...
 - 【转】ios -- ViewController跳转+传值(方式一)
			
方式一:通过定义一个实体类传值 (从ViewController1 跳转至 ViewController2) 1.定义实体类NotificationEntity .h声明文件 #import < ...
 - Mac格式化fat32格式
			
好的,格式化硬盘可以使用电脑内置的磁盘工具来格式. 在 LaunchPad 中的 实用工具 或 其它 找到 磁盘工具 打开磁盘工具后,找到你的移动硬盘. (这里以我的希捷移动盘来示例) 非常容易找到, ...
 - MFC:AfxSetResourceHandle
			
AfxGetResourceHandle用于获取当前资源模块句柄. 而AfxSetResourceHandle则用于设置程序目前要使用的资源模块句柄,一般在InitInstance()里调用.
 - 获得函数返回值类型、参数tuple、成员函数指针中的对象类型
			
//function_traits.h,获得函数返回值类型.参数tuple.成员函数指针中的对象类型 //参考https://github.com/qicosmos/cosmos/blob/maste ...