描述

144. 二叉树的前序遍历

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

示例 1:

输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:

输入:root = []
输出:[]
示例 3:

输入:root = [1]
输出:[1]
示例 4:

输入:root = [1,2]
输出:[1,2]
示例 5:

输入:root = [1,null,2]
输出:[1,2]

思路一:递归调用

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {public:void traverasl(TreeNode* root,vector<int> &res){if(root==nullptr) return;     //当为空时候返回res.push_back(root->val);    //先放头节点traverasl(root->left,res);   //再放左节点traverasl(root->right,res);  //再放右节点}vector<int> preorderTraversal(TreeNode* root) {vector<int> res;     //定义一个返回容器traverasl(root,res); //递归调用return res;}
};

思路二:迭代法

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {public:vector<int> preorderTraversal(TreeNode* root) {stack<TreeNode*> stk;          //定义一个栈用来迭代vector<int> res;                //定义一个返回容器if(root==nullptr) return res;   //做一个保护stk.push(root);            //把头节点压入栈中while(!stk.empty()){TreeNode* tempNode = stk.top();    //把头节点压入栈stk.pop();res.push_back(tempNode->val);      //先取头节点if(tempNode->right!=nullptr)  stk.push(tempNode->right);   //再处理右节点,保证出栈顺序是中做右if(tempNode->left!=nullptr)   stk.push(tempNode->left);}return res;}
};

LeetCode-二叉树-144. 二叉树的前序遍历相关推荐

  1. 二叉树的创建、前序遍历、中序遍历、后序遍历

    二叉树的创建.前序遍历.中序遍历.后序遍历 // BTree.cpp : Defines the entry point for the console application. /*  作者:成晓旭 ...

  2. leetcode系列-144.二叉树的前序遍历

    题目描述: 给你二叉树的根节点 root ,返回它节点值的 前序 遍历. 示例 1:输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2:输入:root = [] 输出:[] ...

  3. LeetCode 144. 树的前序遍历迭代写法

    Time: 20190224 本题对应的是LeetCode 144,Medium难度(迭代算法的难度). 树的前序遍历 Given a binary tree, return the preorder ...

  4. 【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】

    1.何为顺序二叉树 2.顺序二叉树的特点 3.顺序二叉树的遍历 3.1.前序遍历 3.2.中序遍历 3.3.后序遍历 4.顺序二叉树的注意点 [❤️算法系列之二叉树的实现(包含前序.中序.后序遍历以及 ...

  5. 中序建立二叉树,非递归前序遍历二叉树

    内容: 编写程序,实现下述功能,并上机调试通过. 按中序顺序建立一棵二叉树: 用非递归方式遍历二叉树(先序),输出遍历序列. 步骤: 算法分析 采用二叉链表做存储结构,建立二叉树,借助于栈结构来实现二 ...

  6. (C++/python)LeetCode 589. N叉树的前序遍历

    题目描述: 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 思路: 递归和迭代 二叉树的前序遍历是,先遍历根节点,再遍历左节点 ...

  7. 【Leetcode】589. N叉树前序遍历

    题目描述: 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 说明: 递归法很简单,你可以使用迭代法完成此题吗? 解题思路: 1 ...

  8. leetcode —— 589. N叉树的前序遍历 (使用到遍历多叉树的方法)

    给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. ---------- 解法一:通过递归的方法进行求解,时间复杂度为O(n)O( ...

  9. LeetCode 589. N叉树的前序遍历

    目录结构 1.题目 2.题解 2.1递归 2.2迭代 1.题目 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 说明: 递归法 ...

  10. leetcode 589.N叉树的前序遍历(js)

    题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). 示例 1: 输入:root ...

最新文章

  1. 信息隐藏将txt文件合并到jpg文件中_使用Kali Linux在图像内隐藏机密消息—可在任何Linux发行版使用
  2. php中没有dockerfile,Dockerfile在RUN composer install命令中没有使用缓...
  3. 数据库查询求小于_SQL学习笔记(二)简单查询
  4. Hitv8 文件批量重命名工具
  5. C++设计模式-策略模式(Strategy)基本轮廓
  6. 32f4 usb 升级程序_不断中招的你还放心升级win10吗?wi10近期更新问题及解决办法...
  7. Python库安装路径查询MAC,也可以看到pip到底是给哪个版本的Python安装库了
  8. 围观人类弹琴后,Facebook的AI学会了假装演奏
  9. REMIX与LOCALHOST相连
  10. 2019-07-11 nginx 下网页显示乱码
  11. 面试技巧 面试复盘 编程技术 架构 看这一篇就够了
  12. 黑盒测试 白盒测试 灰盒测试
  13. 计算机桌面壁纸被锁定,Win10桌面壁纸被锁定无法修改咋办? win10官网
  14. T229473 D. 背单词的小智 (二分
  15. WebSpider和一些杂七杂八
  16. Facebook借足球影响力推广直播:与俱乐部和球星合作分成
  17. 梯有N阶,上楼可以一步上一阶,也可以一次上二阶(Java实现)
  18. 干货!Flask 动态展示 Pyecharts 图表数据的几种方法!
  19. 维基百科创建需要注意哪些问题?
  20. typora笔记使用base64编码图片

热门文章

  1. CSP认证201703-2 学生排队[C++题解]:模拟
  2. opencv3学习总结1
  3. 写入mysql_MySQL写入缓冲区在数据库中的作用( Change Buffer )
  4. sendto 返回errnor 1,错误码1 Operation not permitted
  5. 数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和
  6. c语言双链表是什么意思,双链表的表示和实现(C语言)
  7. triplet loss后面不收敛_Policy Gradient——一种不以loss来反向传播的策略梯度方法...
  8. java压缩文件_Linux 系统学习--Java学习第118天
  9. java每隔一段时间执行_8.Android中,每隔一段时间执行某一个任务(Timer)
  10. 判断一个变量是不是指针