【LeetCode算法】第94题:二叉树的中序遍历

embedded/2024/10/21 0:30:21/

目录

一、题目描述

二、初次解答

三、官方解法

四、总结


一、题目描述

二、初次解答

1. 思路:二叉树的中序遍历。访问二叉树的左子树,再访问二叉树的根节点,最后访问二叉树的右叉树。

2. 代码:

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

3. 优点:实现简单,容易想到,且仅需遍历一遍,时间复杂度为O(n)。

4. 缺点:需要递归栈空间,空间复杂度为O(n)。

三、官方解法

1. 思路:迭代遍历二叉树,手动维护栈。每次迭代访问子节点前,将当前节点地址保存到栈内,访问完左节点后,再访问当前节点,最后访问右节点。

2. 代码:

int* inorderTraversal(struct TreeNode* root, int* returnSize) {int* ret=malloc(sizeof(int)*100);struct TreeNode** tmp=malloc(sizeof(struct TreeNode*)*100);int top=0;*returnSize=0;while(root || top>0){while(root){tmp[top++]=root;root=root->left;}root=tmp[--top];ret[(*returnSize)++]=root->val;root=root->right;}return ret;
}

3. 优点:符合不采用迭代的要求,且时间复杂度为O(n)。

4. 缺点:手动维护栈,空间复杂度依旧为O(n)。

四、总结

当遇到二叉树中序遍历时,使用递归实现最简单,也可以采用迭代手动维护栈空间来实现。


http://www.ppmy.cn/embedded/44222.html

相关文章

FineBI学习总结

大数据分析BI工具:用户只需简单拖拽便能制作出丰富多样的数据可视化信息 关注点: 快速入门、数据加工、构建图表和分析数据、数据分析进阶 1、界面介绍 目录–仪表板–数据准备 仪表板目录–预览区域 快速上手: 1、数据准备2、制作仪表板3、分…

什么是值传递和引用传递?

在Java中,参数传递可以是值传递或引用传递,这是两种不同的概念: 值传递(Pass by Value): 在值传递中,方法调用时,传递的是实际参数的值的副本。这意味着,如果在方法内部改…

香橙派Orange AI Pro 初体验

什么是香橙派 ? 香橙派(Orange Pi)是深圳市迅龙软件有限公司旗下的开源产品品牌。它专注于为全球个人和企业提供高性价比的开源硬件、开源软件以及OEM/ODM服务。香橙派已经迭代了30多款产品,形成了涵盖开源硬件、开源软件、开源芯…

四川汇聚荣聚荣科技有限公司是正规的吗?

在当今社会,随着科技的飞速发展,越来越多的科技公司如雨后春笋般涌现。然而,在这个信息爆炸的时代,如何判断一家公司是否正规成为了许多人关注的焦点。本文将围绕“四川汇聚荣聚荣科技有限公司是否正规”这一问题展开讨论&#xf…

【busybox记录】【shell指令】unlink

目录 内容来源: 【GUN】【unlink】指令介绍 【busybox】【unlink】指令介绍 【linux】【unlink】指令介绍 使用示例: 删除文件 - 默认 常用组合指令: 指令不常用/组合用法还需继续挖掘: 内容来源: GUN &#x…

python基础知识总结(第一节)

一、python简介: Python是一种解释型,面向对象的高级语言。 Pyhton的语法和动态类型,以及解释性语言的本质,使它一跃成为多数平台上写脚本和快速开发应用的编程语言。 python语言百度百科介绍 二、Python基础语法:…

【深度好文】AI企业融合联盟营销,做的好就是最大赢家!

AI工具市场正在迅速发展,现仍有不少企业陆续涌出,那么如何让你的工具受到目标群体的关注呢?这相比是AI工具营销人员一直在思考的问题。 即使这个市场正蓬勃发展,也无法保证营销就能轻易成功。AI工具虽然被越来越多人认可和接受&a…

MTK Android9.0 给vendor下文件夹权限,用于读取文件列表

1.背景 最近在TV开发中遇到一个问题:如何判断设备烧录过HDCP KEY的问题,由于MTK的官方接口返回值并不准确,只能判断2.2是否烧录,不能准确判断1.4是否烧录过,因为HDCP 的KEY有两个,分别是1.4和2.2&#xff…