二叉树的前中后序遍历(递归法、迭代法)leetcode144、94/145

leetcode144、二叉树的前序遍历

给你二叉树的根节点 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]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100

递归法

void preOrder(struct TreeNode* root,int* ret,int* returnSize){if(root==NULL)return;ret[(*returnSize)++]=root->val;preOrder(root->left,ret,returnSize);preOrder(root->right,ret,returnSize);}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {int* ret=(int*)malloc(sizeof(int)*100);*returnSize=0;preOrder(root,ret,returnSize);return ret;
}

迭代法

int* preorderTraversal(struct TreeNode* root, int* returnSize){int* res=malloc(sizeof(int)*2000);*returnSize=0;if(root==NULL)return res;struct TreeNode* stk[2000];int stk_top=0;while(stk_top>0||root!=NULL){while(root!=NULL){res[(*returnSize)++]=root->val;stk[stk_top++]=root;root=root->left;}root=stk[--stk_top];root=root->right;}return res;
}

leetcode94、二叉树的中序遍历

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:
在这里插入图片描述
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100

递归法

void  inorder(struct TreeNode* root,int* ret,int* returnSize){if(root==NULL) return;inorder(root->left,ret,returnSize);ret[(*returnSize)++]=root->val;inorder(root->right,ret,returnSize);}int* inorderTraversal(struct TreeNode* root, int* returnSize) {int* ret=(int*)malloc(sizeof(int)*100);*returnSize=0;inorder(root,ret,returnSize);return ret;  
}

迭代法

int* inorderTraversal(struct TreeNode* root, int* returnSize) {int* res=malloc(sizeof(int)*2000);*returnSize=0;if(root==NULL)return res;struct TreeNode* stk[2000];int stk_top=0;while(stk_top>0||root!=NULL){while(root!=NULL){stk[stk_top++]=root;root=root->left;}root=stk[--stk_top];res[(*returnSize)++]=root->val;root=root->right;}return res;
}

leetcode145、二叉树的后序遍历

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
示例 1:
在这里插入图片描述
输入:root = [1,null,2,3]
输出:[3,2,1]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
树中节点的数目在范围 [0, 100] 内
-100 <= Node.val <= 100

递归法

void postorder(struct TreeNode* root,int* ret,int* returnSize){if(root==NULL) return;postorder(root->left,ret,returnSize);postorder(root->right,ret,returnSize);ret[(*returnSize)++]=root->val;}
int* postorderTraversal(struct TreeNode* root, int* returnSize) {int* ret=(int*)malloc(sizeof(int)*100);*returnSize=0;postorder(root,ret,returnSize);return ret; 
}

迭代法

int* postorderTraversal(struct TreeNode* root, int* returnSize) {int* res=malloc(sizeof(int)*2000);*returnSize=0;if(root==NULL)return res;struct TreeNode* stk[2000];struct TreeNode* prev=NULL;int stk_top=0;while(stk_top>0||root!=NULL){while(root!=NULL){stk[stk_top++]=root;root=root->left;}root=stk[--stk_top];if(root->right==NULL||root->right==prev){//右子树遍历完res[(*returnSize)++]=root->val;//输出根节点prev=root;root=NULL;}else{//右子树未遍历完stk[stk_top++]=root;//根节点入栈root=root->right;//遍历右子树}}return res;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Torch中`Transformer`的中文注释

解析torch官方代码脚本文件&#xff1a;transformer.py。版本&#xff1a;1.9.1cu111。 首先查看《Torch中多头注意力MultiheadAttention的中文注释》解析&#xff1b; 最后查看下方transformer解析。 话不多说&#xff0c;看代码吧&#xff01; import copy from typing imp…

CesiumJS【Basic】- #057 绘制纹理填充多边形(Primitive方式)

文章目录 绘制纹理填充多边形(Primitive方式)1 目标2 代码2.1 main.ts绘制纹理填充多边形(Primitive方式) 1 目标 使用Primitive方式绘制绘制纹理填充多边形 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer

测试Andrew NG的语言翻译Agent

我正在测试 Andrew Ng 的语言翻译 A​​I 代理系统及其在逆变换下的稳定性。 给定源语言的文本&#xff0c;我们应用翻译函数 f&#xff0c;然后应用 f 的逆。它应该是不变的&#xff1a; 但是&#xff0c;数学与语言翻译有什么关系&#xff1f; 在完美的系统中&#xff0c;从…

springboot异常产生原因

DataIntegrityViolationException Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default value org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLException: Field id doesnt have a default …

Android音频管理器探索与应用

在Android应用开发中&#xff0c;音频管理器是一个至关重要的组件&#xff0c;它负责处理设备的音频功能&#xff0c;包括音量控制、音频路由、音效处理以及与其他应用的音频交互。本文将深入探讨Android音频管理器的功能和应用&#xff0c;帮助开发者更好地理解和利用这一关键…

[译]全栈Redux实战

本文乱译自一篇英文博文&#xff08;Full-Stack Redux Tutorial&#xff09;&#xff0c;本人英语能力不足&#xff0c;技术能力有限&#xff0c;如有错误&#xff0c;多多包涵。 #关于ReduxReactImmutable的测试先行开发综合指南 Redux是最近发生在js界令人兴奋的事儿。它把…

提升Unity WebGL游戏启动速度

一、查看启动耗时 通过修改unity-namespace.js中hideTimeLogModal为false&#xff0c;显示timelog开发者可以看到小游戏目前的启动首屏时长&#xff1a; 将其设置为false后&#xff0c;启动小程序后就会显示启动耗时 要知道各个阶段的含义&#xff0c;我们必要理解启动流程。 …

springboot 整合 mybatis-plus

一.前言 1. mybatis-plus是什么 mybatis-plus是一个对mybati框架的拓展框架&#xff0c;它在mybatis框架基础上做了许多的增强&#xff0c;帮助我们快速的进行代码开发。目前企业开发中&#xff0c;使用mybati的项目基本会选择使用mybatis-plus来提升开发效率。 2.官网地址&…

LT8668SXC 、LT8668SX-D 、LT8668SX三种芯片的相似与不同

一、LT8668SXC(支持eDP输出&#xff09; 定义:LT8668SXC配置在HDMI2.1标准下工作&#xff0c;最大数据速率为8Gbps。 LT8668SXC还可以配置为在Type-C输入或DP1.4a下工作&#xff0c;数据速率高达8.1Gbps。 eDP1.4b输出由8个数据通道组成&#xff0c;支持RBR (1.62Gbps)、HBR (2…

比较多种msvcr110.dll丢失的解决方法,哪一种更加方便?

当遇到“msvcr110.dll丢失”这种问题时&#xff0c;这通常意味着你的系统中缺少了Microsoft Visual C 2012 Redistributable的组件。下面我将详细介绍五种解决方法&#xff0c;并对比它们的优点。 一.多种msvcr110.dll丢失的解决方法 方法 1: 重新安装Microsoft Visual C 2012…

Redis持久化的三种方式(RDB、AOF和混合)

Redis持久化的三种方式(RDB、AOF和混合) 目录 Redis持久化的三种方式(RDB、AOF和混合)介绍RDB示例1.配置文件2.触发 RDB 快照保存3.验证 AOF示例1.配置文件2.校验 混合型持久化存储配置文件 介绍 Redis数据主要存储与内存中&#xff0c;因此如果服务器意外重启、宕机、崩溃&am…

乘积最大子数组

代码实现&#xff1a; 方法一&#xff1a;暴力法 方法二&#xff1a;动态规划 int maxProduct(int *nums, int numsSize) {long imax nums[0], imin nums[0], res nums[0];for (int i 1; i < numsSize; i) {if (nums[i] < 0) {int temp imax;imax imin;imin temp;…

自动生成网站sitemap

要在 Next.js 和 Contentlayer 项目中实现自动生成 Sitemap 的功能&#xff0c;你可以编写一个脚本&#xff0c;在每次生成文档后自动生成 Sitemap。以下是一个示例脚本&#xff0c;你可以根据自己的需求进行调整。 步骤 1&#xff1a;安装必要的依赖 首先&#xff0c;你需要…

【加密与解密】【08】Java加密算法详解

文章目录 Java加密库摘要算法MD5代码实现SHA256代码实现HmacMD5代码实现CRC32代码实现对称加密算法查看JDK支持的算法Base64代码实现DES代码实现DESede代码实现AES代码实现RC代码实现IDEA代码实现PBE代码实现非对称加密算法DH秘钥交换算法数学原理DH算法代码实现RSA算法代码实现…

【python全栈系列】day03-python数据类型-Number

python3中有六个标准的数据类型:Number&#xff08;数字&#xff09;String&#xff08;字符串&#xff09;List&#xff08;列表&#xff09; Tuple&#xff08;元组&#xff09; Set&#xff08;集合&#xff09;Dictionary&#xff08;字典&#xff09; 下面我们就用几天的…

学会python——用python编写一个电子时钟(python实例十七)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…

thinkphp8 执行 db:: 需要引入什么

在ThinkPHP8中&#xff0c;执行数据库操作需要使用Db类。为了执行Db::静态调用&#xff0c;您需要引入think\facade\Db类。 在您的控制器或模型文件顶部&#xff0c;使用以下代码引入Db类&#xff1a; use think\facade\Db; 然后您就可以使用Db类来执行数据库操作&#xff0c;…

【Python】从Word文档中提取表格的方法

在Python中&#xff0c;从Word文档&#xff08;通常是.doc或.docx格式&#xff09;中提取表格可以使用第三方库&#xff0c;如python-docx。以下是使用python-docx库从Word文档中提取表格的基本步骤&#xff1a; 安装python-docx库&#xff1a; 如果你还没有安装这个库&#xf…

今天的A股,让人惊愕了,2个耐人寻味的重要信号,有望迎来下一个超级风口!

今天的A股&#xff0c;让人惊愕了&#xff0c;你知道是为什么吗&#xff1f;盘面上出现2个耐人寻味的重要信号&#xff0c;有望迎来下一个超级风口&#xff01; 1、今天两市低开低走&#xff0c;但大消费劲头十足&#xff0c;连中免这样的大体量都涨停了&#xff0c;另外消费茅…

爬虫-网页基础

HTML 基本语法 HTML&#xff1a;Hyper Text Markup Language, 超文本标记语言&#xff0c;是计算机语言的一种&#xff0c;由元素构成。 p元素 <p>Web 真好玩&#xff01;</p> 由三大部分组成 开始标签&#xff1a;一对尖括号中间包裹这元素名称元素内容&#x…