Leetcode二叉树的前、中、后序遍历

【力扣刷题】二叉树前中后序遍历 二叉树遍历系列 前序遍历:打印 - 左 - 右 中序遍历:左 - 打印 - 右 后序遍历:左 - 右 - 打印 在树的深度优先遍历中(包括前序、中序、后序遍历),递归方法最为直观易懂,但考虑到效率,我们通常不推荐使用递归。 1. 力扣 - 二叉树的前序遍历 递归: 递归思路:先树根,然后左子树,然后右子树。每棵子树递归。 class Solution { public List<Integer> preorderTraversal(TreeNode root) { / 阅读详情

Every day a leetcode

递归实现二叉树的前、中、后序遍历。

前序遍历

题目来源:144. 二叉树的前序遍历

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
#define MAX_NODE_SIZE 100
void preOrder(struct TreeNode* root,int* ans,int* ansSize)
{
    if(root == NULL) return;
    ans[(*ansSize)++]=root->val;
    preOrder(root->left,ans,ansSize);
    preOrder(root->right,ans,ansSize);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize){
    *returnSize=0;
    int* ans=malloc(MAX_NODE_SIZE*sizeof(int));
    preOrder(root,ans,returnSize);
    return ans;
}

结果:
在这里插入图片描述

中序遍历

题目来源:94. 二叉树的中序遍历

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
#define MAX_NODE_SZIE 100
void inOrder(struct TreeNode* root,int* ans,int* ansSize)
{
    if(root == NULL) return;
    inOrder(root->left,ans,ansSize);
    ans[(*ansSize)++]=root->val;
    inOrder(root->right,ans,ansSize);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){
    *returnSize=0;
    int *ans=malloc(MAX_NODE_SZIE*sizeof(int));
    inOrder(root,ans,returnSize);
    return ans;
}

结果:
在这里插入图片描述

后序遍历

题目来源:145. 二叉树的后序遍历

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
#define MAX_NODE_SZIE 100
void postOrder(struct TreeNode* root,int* ans,int* ansSize)
{
    if(root == NULL) return;
    postOrder(root->left,ans,ansSize);
    postOrder(root->right,ans,ansSize);
    ans[(*ansSize)++]=root->val;
}
int* postorderTraversal(struct TreeNode* root, int* returnSize){
    *returnSize=0;
    int *ans=malloc(MAX_NODE_SZIE*sizeof(int));
    postOrder(root,ans,returnSize);
    return ans;
}

结果:
在这里插入图片描述

Easymesh之拓扑模块(二) 介绍 easymesh 拓扑消息:Topo discovery、Topo notification、Topo query、Topo response 阅读详情

相关推荐

MySQL 8.0数据库崩了别慌!手把手教你仅凭一个.ibd文件找回数据(附Go工具包)

本文详细介绍了在MySQL 8.0数据库崩溃后,如何仅凭.ibd文件恢复数据的完整流程。通过使用Go语言工具包和ALTER TABLE技巧,即使没有备份也能实现数据重生。文章包含从环境准备到数据验证的全方位指导,帮助DBA和开发者应对紧急数据恢复场景。

weixin_29235923的博客 420

LeetCode:二叉树的先序、中序、后序遍历

文章目录树的定义树的代码实现先序遍历(头左右)中序遍历(左头右)后序遍历(左右头) 树的定义 树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中: 1)有且仅有一个特定的称为根(Root)的结点; 2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tn,其中每一个集合本身又是一棵树,并且称为根的子树。 此外,树的定义还需要强调以下两点: 1)n>0时根结点是唯一的,不可能存在多个根结点,数据结构中的树只能有一个根结点。 2)m

qq_40673864的博客 724

MWORKS 2025a电气模型库实战:手把手教你搭建全桥LLC电路(附避坑指南)

本文详细介绍了如何使用MWORKS 2025a电气模型库搭建全桥LLC电路,包括环境准备、电路拓扑构建、参数优化及故障诊断。通过实战案例和避坑指南,帮助电源工程师高效设计谐振转换器,提升转换效率至98%以上。文章特别强调了Modelica模型库在电气系统建模中的关键作用。

s8t9u0v1w的博客 603

leetcode刷题01:二叉树的前序、中序、后序、层次遍历(python实现)

二叉树的前序、中序、后序、层次遍历 本文主要汇总leetcode中涉及到二叉树前、中、后、层次遍历的题目以及对应的思路和解答。 文章目录二叉树的前序、中序、后序、层次遍历144:二叉树的前序遍历递归实现迭代实现94:二叉树的中序遍历递归实现迭代实现145:二叉树的后序遍历递归实现迭代实现102:二叉树的层序遍历107:二叉树的层次遍历II 关于普通的前后中层次遍历: 目前我整理的有递归和迭代两种实现方式(前中后遍历) 递归和迭代两种思路都有套路可言,比如递归实现只需要改变一下代码的位置,而迭代涉及到栈的使用

ayangann915的博客 601

尚硅谷 Vue2.0 + Vue3.0 入门到精通教程学习笔记 (一)

本文为总结尚硅谷Vue2.0+Vue3.0 的学习笔记系列的第一章——Vue的核心,包含Vue简介、模板语法、数据绑定、MVVM模型、事件处理,计算属性与监视、class与style绑定、列表渲染、过滤器、内置指定和自定义指令以及Vue生命周期等知识点

weixin_44566194的博客 3655

AD9361 官方例程

文章目录一、官方资料1.1 介绍1.2 下载 和 使用1.3 相关资料二、步骤2.1 在Vivado中构建HDL2.2 在SDK中构建No- OS总结 一、官方资料 1.1 介绍 HDL参考设计介绍:AD9361 HDL Reference Designs 无操作系统介绍:AD9361 No-OS Software 1.2 下载 和 使用 HDL下载:Download HDL 在Vivado中构建HDL:Building HDL No-OS下载:Download No-OS 1.3 相关资料 AD

weixin_44630490的博客 3万+

二叉树的前中后序遍历

题目来源:LeetCode 二叉树的前序遍历 二叉树前序遍历 public List<Integer> preorderTraversal(TreeNode root) { if(root == null){ return new ArrayList<>(); } List<Integer&gt...

qq_42031380的博客 320

使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

kk_stoper的博客 1517

leetcode- 实现二叉树先序,中序和后序遍历

1、题目 给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。 数据范围:0≤n≤1000,树上每个节点的val值满足 0≤val≤100 要求:空间复杂度 O(n),时间复杂度O(n)。 例如: 输入:{1,2,3} 输出:[[1,2,3],[2,1,3],[2,3,1]] 2、思路 思路一:用递归的方法,先序:根左右, 中序:左根右,后序:左右根 3、代码 class Solution { public: /** * * @param root TreeNode类

weixin_41803339的博客 568

【遥感物候】植被物候与气候(气温和降水)条件的空间相关性分析

植被生长与气候的关系最为密切,通过计算植被各个生长季参数和气温、降水之间的相关系数可以分析生长季参数的变化与气温、降水之间的关系的程度。本文计算30年的植被物候参数和气候数据之间的相关性,最终效果如下: 一、相关性分析原理 植被生长季及其变化是其生长环境中多个影响因子综合作用的耦合过程,其中气候是最重要、最活跃的环境因子。通过计算各个生长季参数和气温、降水之间的相关系数...

智慧空间实验室 8260

小程序数据采集(3):PC端微信小程序降维调试与流量数据获取详解

本文提出了一种针对PC端微信小程序的逆向分析方法,通过利用PC端基于Chromium架构的天然优势,实现无需Root的降维打击。文章详细介绍了如何开启CEF远程调试协议、基于DevTools Protocol实现流量劫持、对抗PC端安全防线以及获取小程序本地存储数据的技术方案。相比移动端严苛的环境,PC端小程序在调试接口、网络拦截和数据存储等方面存在显著漏洞,为爬虫开发提供了更便捷的突破口。

数据知道的博客 827

LeetCode二叉树的前序、中序、后序遍历(递归实现)

本文用递归算法实现二叉树的前序、中序和后序遍历,提供Java版的基本模板,在模板上稍作修改,即可解决LeetCode144. Binary Tree Preorder Traversal(二叉树前序遍历),94. Binary Tree Inorder Traversal(二叉树中序遍历),145. Binary Tree Postorder Traversal(二叉树后序遍历)。

码上暴富 845

自然语言处理在智能客服系统中的应用

引言与背景 1.1 书籍的目的和内容概述 《自然语言处理在智能客服系统中的应用》旨在探讨自然语言处理(NLP)技术在智能客服系统中的应用,帮助读者理解NLP的核心概念及其在解决实际业务问题中的关键作用。随着人工智能技术的快速发展,自然语言处理成为构建智能客服系统的核心模块之一。本书将深入解析NLP

AI天才研究院 967

二叉树的前中后序遍历——leetcode94、144、145

在解决二叉树的前中后序遍历的时候,首要了解的是前中后序指的是根节点在哪被遍历,了解了这个想法,其实使用递归的方法就很好解决这几个题目了。我认为最关键的还是要想到如何在遍历完左子树或者右子树时再回到根节点,不然无法保证顺序!给定一个二叉树的根节点 root ,返回 它的 中序 遍历。进阶: 递归算法很简单,你可以通过迭代算法完成吗?想到的解法不是很好,没有正面的解决根节点位置的问题。输入:root = [1,null,2,3]输入:root = [1]输入:root = []输出:[1,3,2]

m0_46860258的博客 860

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode题详解 | 二叉树的前中后序遍历

二叉树OJ题详解——二叉树的前中后序遍历

2401_87255690的博客 523

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

leetcode刷题之 树(18)-前中后序遍历: 非递归实现二叉树的前序遍历

前中后序遍历 1 / \ 2 3 / \ \ 4 5 6 层次遍历顺序:[1 2 3 4 5 6] 前序遍历顺序:[1 2 4 5 3 6] 中序遍历顺序:[4 2 5 1 3 6] 后序遍历顺序:[4 5 2 6 3 1] 层次遍历使用 BFS 实现,利用的就是 BFS 一层一层遍历的特性;而前序、中序、后序遍历利用了 DFS 实现。 前序、中序...

qq_40320556的博客 201

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

二叉树前、中、后序遍历【LeetCode题目讲解】

按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历:1.前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。2.中序遍历(norder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。3.后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。

m0_74247579的博客 1463

LeetCode:二叉树的前、中、后序遍历——如何创建一棵【二叉树】

LeetCode:二叉树的前、中、后序遍历——如何创建一棵【二叉树】 给你二叉树的根节点 root ,返回它节点值的`前序`、`中序`、`后序`遍历。 🌱[144、先序遍历] 🌱[94、中序遍历] 🌱[144、后序遍历]

Super algorithm 的博客,技术爱好者。 1945

二叉树前中后序遍历等操作leetcode

二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [1,2,3] public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); ...

s11235218的博客 183

LeetCode——二叉树的前中后序遍历

二叉树主要有两种遍历方式: 深度优先遍历:先往深走,遇到叶子节点再往回走。 广度优先遍历:一层一层的去遍历,也就是常说的层遍历。 在深度优先遍历中:有三个顺序,前中后序遍历,这中间的"前中后"指的是遍历父节点的先后顺序,且左节点永远在右节点前面遍历。 前序遍历(父左右):F、B、A、D、C、E、G、I、H。 中序遍历(左父右):A、B、C、D、E、F、G、H、I。 后序遍历(左右父):A、C、E、D、B、H、I、G、F。 图片来源:https://zh.m.wikipedia.org/

weixin_53598445的博客 1159

LeetCode二叉树的前、中、后序遍历

示例 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] (2)、思路分析和完整代码 1.主函数的返回类型是int*类型,代表要将二叉树数据存储在一个数组中。2.数组不能是静态数组,对内存不友好,而动态数组就必须要知道节点个数,因此

2302_80274319的博客 635

LeetCode---二叉树前中后序遍历

前言 之前几篇文章都是按照一个同学给的Word敲的,顺序也是链表开始,我敲的都是简单题。今天发现了一个博主,打算按照他的顺序来,再加上他有相应的解释。所以今天更一下学到的二叉树模板和学的第一个数组代码。 问题 二叉树的前序、中序、后序遍历。 思路分析 LeetCode上说递归比较简单(虽然我还没有敲过递归的答案),就先学习了迭代的模板。说解释,我看了视频解释也不是很懂,但是记住了关键的几行代码。 代码如下: //前序遍历---根左右 class Solution { public List<

飞翔的胖迪 680

LeetCode刷题笔记 二叉树 前中后序遍历

二叉树前中后序遍历简介 ​ 前序遍历、中序遍历和后序遍历是三种利用深度优先搜索遍历二叉树的方式。它们是在对节点访问的顺序有一点不同,其它完全相同。例如层次遍历得到的二叉数为 [1,2,3,4,5,6,7] ​ NLR 其前序遍历结果为 [1,2,4,5,3,6,7],先遍历父结点,再遍历左结点,最后遍历右节点 void preorder(TreeNode* root) { visit(root); preorder(root->left); preorder(root->

王清欢的博客 3247

LeetCode 二叉树的前中后序遍历

LeetCode 二叉树的遍历:前中后(链表实现)

qq_61080482的博客 475

Leetcode-二叉树-前中后序遍历

题目: 前序 后序 中序 题解: 解法很多,这里主要提及 1,递归 2,标记法(具体讲解见这里) 代码: 1,基本方法 前序遍历(中-最左-右) DFS实现 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;

一只菜鸟夹 390

LeetCode 之 二叉树的前,中,后序遍历

相较于前边的 前序遍历 和 中序遍历 来说,后序遍历稍微复杂一下,因为前序遍历和后序遍历访问根节点都是在访问右节点之前进行的,而后序遍历是在访问右节点之后才访问根节点的,当右节点为空时,可以直接访问根节点,但是当右节点不为空,需要先访问右子树然后再访问根节点,但是当访问完右子树后,由于并无记录,并不知道右子树是否访问过,此时会又访问右子树,首先,不断地递归访问左子树,并不断地将节点入栈,当遇到空时,取栈顶节点,将其对应值写到数组中,然后pop栈顶元素,访问刚刚栈顶节点的右子树。

. 231
上一篇: Leetcode136. 只出现一次的数字
下一篇: Leetcode102. 二叉树的层序遍历
UestcXiye
博客等级 码龄8年 9030粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值