二叉树中序遍历算法详解+实战
【摘要】 CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
欢迎小伙伴们点赞👍、收藏⭐、留言💬
🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,
、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
一、题目描述
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
约束条件:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100
二、测试样例
输入:root = [1,null,2,3]
输出:[1,3,2]
说明:二叉树如下所示:
先访问节点 1,然后访问节点 3,最后访问节点 2。
三、算法思路
本题主要考查中序遍历算法,但是,本题还需要记录遍历的节点,在遍历的过程中存储即可。中序遍历有两种方法:
(1)递归方法
使用深度优先搜索,中序递归访问,并在访问过程中记录访问的节点。
(2)未递归方法
采用栈存储节点,模拟深度优先搜索,并在访问过程中记录访问的节点。
四、代码实现
五、复杂度分析
5.1 时间复杂度
时间复杂度:O(n),假设有 n 个节点,中序遍历每一个节点,且每一个节点只访问一次,故时间复杂度为O(n)。
5.2 空间复杂度
空间复杂度:O(n),使用栈来存储节点,栈的深度最大为 n,故空间复杂度为O(n)。
六、题目链接
https://leetcode-cn.com/problems/binary-tree-inorder-traversal/
七、总结
本题主要考查中序遍历算法,需要掌握递归和非递归两种方法。
CSDN博客专家🏆,华为云享专家🏆,
、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!欢迎小伙伴们点赞👍、收藏⭐、留言💬
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)