二叉树的前序遍历(利用栈)

1.首先将根节点压入栈

2.栈中的首元素出栈,然后先将其右节点压入栈中,再将栈中的左节点压入栈中(如果左右节点分别存在的话)

3.重复步骤2直到栈为空

class Solution {
public:stack<TreeNode*> st;vector<int> preorderTraversal(TreeNode* root) {vector<int> res;if(root == nullptr) return res;st.push(root);while(!st.empty()){TreeNode* tp = st.top();st.pop();res.push_back(tp->val);if(tp->right) st.push(tp->right);if(tp->left) st.push(tp->left);}return res;}
};

二叉树的中序遍历(利用栈)

遍历是按照“左根右”的顺序来进行的,按照"右根左"的方法进行遍历,然后翻转一下就可以得到答案

class Solution {
public:stack<TreeNode*> st;vector<int> inorderTraversal(TreeNode* root) {vector<int> res;while(root || st.size()){while(root){st.push(root);root = root->right;}root = st.top();res.push_back(root->val);st.pop();root = root->left;}reverse(res.begin(),res.end());return res;}
};

二叉树的后序遍历(利用栈)

遍历是按照“左右根”的顺序来进行的,按照"根右左"的方法进行遍历,然后翻转一下结果就可以得到答案

class Solution {
public:stack<TreeNode*> st;vector<int> postorderTraversal(TreeNode* root) {vector<int> res;while(root || st.size()){while(root){res.push_back(root->val);st.push(root);root = root->right;}root = st.top()->left;st.pop();}reverse(res.begin(),res.end());return res;}
};

(必背)二叉树的前中后序遍历(利用栈)相关推荐

  1. 二叉树的前中后序遍历(栈)(C++)

    二叉树的遍历是很基础的东西,用递归是很简洁明了的写法,但是栈的写法也可以了解一下 #include<vector> #include<stack> struct TreeNod ...

  2. 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]

    二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...

  3. Java二叉树的前中后序遍历

    Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...

  4. 数据结构之二叉树的前中后序遍历以及层序遍历

    学习目标:读完这篇博客搞定二叉树的前中后序以及层序遍历 首先:你应该明白什么是二叉树,下面这幅图就是一个完全二叉树 其实所谓的二叉树就是一个节点有小于等于二个分支的树,可以没有分支,可以有1条分支,可 ...

  5. 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)

    二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...

  6. 二叉树的前中后序遍历之迭代法(非统一风格迭代方式)

    文章目录 前言 一.前序遍历(迭代法) 二.中序遍历(迭代法) 三.后序遍历(迭代法) 总结 前言 「递归的实现就是:每一次递归调用都会把函数的局部变量.参数值和返回地址等压入调用栈中」,然后递归返回 ...

  7. 二叉树的前中后序遍历(考试常考)

    二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根).         由于树是通过 ...

  8. 【数据结构】二叉树的前中后序遍历

    二叉树的三种遍历 1. 创建一棵简单的二叉树 1.1 二叉树结构体实现 1.2 创造一个二叉树结点的函数 1.3 手动创造一棵二叉树 2.为什么要遍历? 3.最重要的知识:由二叉树引出的子问题分析 4 ...

  9. 二叉树的前中后序遍历之迭代法(统一风格迭代方式)

    一.前序遍历(迭代法)->右左中 前序遍历是中左右,每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子. 为什么要先加入 右孩子,再加入左孩子呢?因为这样出栈的时候 ...

最新文章

  1. 工业用微型计算机(11)-指令系统(8)
  2. linux编写日志接口so,linux下动态链接问题(.so文件的编写与调用) .
  3. docker --- 镜像、容器
  4. 前端学习(2992):vue+element今日头条管理--目录结构说明
  5. 干货|我在 GitHub 上发现了一款骚气满满的字体!
  6. 900万注释图像数据集升级了!谷歌开放Open Images V6,首增语音、文本、鼠标轨迹同步注释...
  7. “use strict” 严格模式使用(前端基础系列)
  8. 全栈出征,京东技术基石如何为“618”大促护航?
  9. 输入n个字符串字典序排序_30个Python奇淫技巧集
  10. 由前序遍历和中序遍历确定二叉树
  11. css元素居中的几种方式
  12. Unity编辑器修改图片的大小
  13. JavaScript自定义求和函数
  14. 网页H5实现 美团接单 连接打印机打印客户下单信息
  15. 软件开发知识点基础介绍
  16. 【网安神器篇】——mimikatz系统取证工具
  17. 【转载】yafu的安装及使用(线下工具与线上网站)
  18. 小程序带参数二维码生成接口
  19. U盘分区合并的教程详解
  20. 开源3D播放器bino

热门文章

  1. 吃鸡服务器显示错误代码103,安装错误代码103怎么回事?
  2. Internet——Download——Manager学习记录
  3. 海思 Hi3516 使用 gpac 库把 H265 和 AAC 封装成 MP4
  4. nvcc与nvidia
  5. STM32F105配置为USB设备时
  6. Warning: preg_match(): Compilation failed: PCRE does not support
  7. 错误ID:10005,错误信息:DCOM 遇到错误“无法启动服务,原因可能是它被禁用或与它相关联的设备没有启动。 ”,试图以参数“”启动服务 SENS 以运行服务器:...
  8. YOLOv5读取摄像头实时检测目标并将裁剪后的部分保存
  9. 罗升阳:那两年炼就的Android内功修养
  10. linux删除文件夹或者文件