1.前序遍历

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>using namespace std;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) {vector<int> result;Traversal(root, result);return result;}// 1.确定函数入参void Traversal(TreeNode* node, vector<int>& vec){// 2.确定递归终止条件if(node == nullptr) return ;// 3.确定单层递归逻辑代码vec.push_back(node->val);Traversal(node->left, vec);Traversal(node->right, vec);}
};

2.中序遍历

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>using namespace std;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> inorderTraversal(TreeNode* root) {vector<int> result;Traversal(root, result);return result;}// 1.确定函数入参void Traversal(TreeNode* node, vector<int>& vec){// 2.确定递归终止条件if(node == nullptr) return ;// 3.确定单层递归逻辑代码Traversal(node->left, vec);vec.push_back(node->val);Traversal(node->right, vec);}
};

3.后序遍历

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>using namespace std;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> postorderTraversal(TreeNode* root) {vector<int> result;Traversal(root, result);return result;}// 1.确定函数入参void Traversal(TreeNode* node, vector<int>& vec){// 2.确定递归终止条件if(node == nullptr) return ;// 3.确定单层递归逻辑代码Traversal(node->left, vec);Traversal(node->right, vec);vec.push_back(node->val);}
};

【LeetCode | 二叉树前、中、后序遍历{递归法}实现】相关推荐

  1. 二叉树前中后序遍历以及节点计算

    二叉树前中后序遍历以及节点计算 二叉树 分类 二叉链的数据结构 三叉链的数据结构 四种遍历方法 深度优先遍历:前中后序 广度优先遍历:层序遍历 计算 节点个数 叶子节点个数 树的高度 第k层的节点个数 ...

  2. [Leedcode][JAVA][第94/144/145题][前中后序遍历][递归][迭代][二叉树]

    [问题描述][] 前序遍历 先输出当前结点的数据,再依次遍历输出左结点和右结点 中序遍历 先遍历输出左结点,再输出当前结点的数据,再遍历输出右结点 后续遍历 先遍历输出左结点,再遍历输出右结点,最后输 ...

  3. 二叉树前中后序遍历的非递归实现以及层次遍历、zig-zag型遍历详解

    前言 二叉树的遍历是一个比较常见的问题,递归实现二叉树的前中后序遍历比较简单,但非递归实现二叉树的前中后序遍历相对有难度.这篇博客将详述如何使用非递归的方式实现二叉树的前中后序遍历,在进行理论描述的同 ...

  4. 二叉树前中后序遍历+刷题【中】【数据结构/初阶/C语言实现】

    文章目录 1. 二叉树基础操作 1.1 二叉树遍历 1.1.1 前序遍历 前序遍历(Pre-Order Traversal) 1.1.2 中序遍历 中序遍历(In-Order Traversal) 1 ...

  5. 【Java数据结构】二叉树的前中后序遍历(递归和非递归)

    二叉树的遍历 递归做法 前序遍历 中序遍历 后序遍历 非递归 前序遍历 中序遍历 后序遍历 二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 递归做法 前序遍 ...

  6. 二叉树前中后层遍历(递归/非递归)(简单易懂(*^ー^))

    文章目录 二叉树的遍历 1 先序遍历 1.1 递归 1.2 非递归 2 中序遍历 2.1 递归 2.2 非递归 3 后序遍历 3.1 递归 3.2 非递归 4 层序遍历 5 前中后层序完整可运行代码( ...

  7. 【霍罗维兹数据结构】二叉树前中后序遍历 | 层序遍历 | 复制二叉树 | 判断两个二叉树全等 | 可满足性问题

    写在前面 学习二叉树结构,最简单的方式就是遍历.所谓二叉树遍历,就是按照某种特定的规则,一次对二叉树中的节点进行相应的操作,并且每个节点只操作一次. 访问节点所做的操作要看具体的应用问题.遍历是二叉树 ...

  8. 二叉树N叉数的前中后序遍历总结,python实现递归法和迭代法

    关于二叉树的前序遍历(preoder).中序遍历(inorder)和后序遍历(postorder),实际上只需要记住:左子节点一定在右子节点的左边(左右),所谓前中后序遍历就是根节点的位置不同,前序是 ...

  9. LeetCode——树:层次遍历、前中后序遍历

    LeetCode--树:层次遍历.前中后序遍历 目录 层次遍历 二叉树的层平均值 找树左下角的值 前中后序遍历 概述 非递归实现二叉树的前序遍历 非递归实现二叉树的中序遍历 非递归实现二叉树的后序遍历 ...

  10. 二叉树的层序遍历和前中后序遍历代码 迭代/递归

    二叉树的层序遍历和前中后序遍历代码 迭代/递归 只记录代码.思路参考代码随想录:https://github.com/youngyangyang04/leetcode-master/blob/mast ...

最新文章

  1. 静态页面访问缓慢的问题
  2. CMAKE_CURRENT_BINARY_DIR
  3. 如何实现一个Java Class解析器
  4. SQL SELECT DISTINCT 语句 用法
  5. 从零开始学keras之电影二分类
  6. Memcache入门知识
  7. spring cloud微服务之间调用Feign
  8. 自动化中间人攻击工具subterfuge小实验
  9. 【医疗影像处理】antspy数据读取与保存
  10. vue-cli项目代理proxyTable配置exclude的方法
  11. win10 系统亮度调节
  12. C语言与C++常见问答题
  13. 我所理解的 iOS 并发编程
  14. 基于阈值的图像二值化方法MATLAB
  15. percona mysql备份与恢复(一)
  16. win8(四)实例讲解win8(XAML+C#)开发--------课程表:Snapped模式和动态磁贴,徽章(badge)
  17. 如何使用Folding @ home和游戏PC对抗冠状病毒
  18. 老贴不过觉得还是有意思:中国男足为什么总是输?
  19. 2021年中国炼焦煤行业产量、进出口量分析「图」
  20. MapReduce计数器实验

热门文章

  1. Aggregation,Composition和Dependency
  2. Java进程与线程的区别
  3. 开源项目:windows下使用MinGW+msys编译ffmpeg
  4. NandFlash详述【转】
  5. 《1024伐木累》-人生最高境界,长的好看
  6. 更改mvc版本的时候,手动修改交3.0改到4.0,将razor改到2.0,仍然提示出现错误,mvc3.0...
  7. QA发现的令人抓狂的BUG
  8. 亿级流量架构之服务器扩容思路及问题分析
  9. 劝大家逃离互联网!某前互联网员工自述:从互联网到传统行业,工资多,不加班,有户口,能买房!...
  10. 某程序员遭遇奇葩事:辞退自己的leader竟然命令自己回前公司,给前同事讲代码!...