数据结构-二叉树

胡桃祝大家新年快乐!

啊啊啊啊二叉树的题难起来真的非人啊!

写这篇文章的时候还有40分钟就2023年了,所以这篇尽量写简单一些,也算是赶在明年之前的了呜呜呜。

关于树和二叉树

树是在计算机系统储存中实际应用非常广泛的一种数据结构,像我们电脑系统最基本的磁盘储存和文件夹储存都是树状结构。

顾名思义,这种数据结构之所以称之为树,就是因为这种储存结构是由根发散而来的,就是一棵树由根生长出许多枝叶一样。

关于树有许多概念,像是度,深度,叶子节点,双亲结点等等,我就不一一细讲了,这些概念能够理解并且掌握简单性质即可。

二叉树

二叉树属于树,是一种特殊的树,这种树每一个节点往下最多生长出两个子节点,这样的树就被称为二叉树。

为什么我们要用二叉树,而不用三叉树或者四叉树呢?

实际上上一个标题所说的树就包括了各种数量叉的树,而二叉树之所以很特殊,一个是因为二很特殊,基于二可以衍生出非常多的数据结构和理论;而且二叉树本质上是由递归定义的,所以二倍的增长递归更符合一些计算机中的规律。

实际上使用起来,他要比我之前学得顺序表和链表都要好,因为顺序表插入数据效率低,链表则是尾删慢而且搜索数据比较慢;而二叉树结合了这两者的优点,具体的实现在将堆的时候我也会再进行总结。堆其实就是一种特殊的二叉树。

学习感受和习题推荐

总的来说,初学二叉树,一定会有一种全新的学习体验,因为这种数据结构是非线性的,很多操作会让我们感到耳目一新,会有“还可以这样?”的感觉。而且从二叉树开始,我们会接触到大量的递归,可以毫不夸张地说,80%以上的题目都完全可以用递归的方法来实现,这是因为我上面有说到二叉树实际上就是递归定义的,所以它是天生适合用递归来实现的。当然,非递归也可以,那就继续要结合其他的数据结构来实现了。

于我而言,学完二叉树,首先是掌握了三个思想,一个是递归方法解决子问题是关键;第二个是如何用二叉树的思维来解题,也就是所谓的非线性思维;第三个则是深度优先和广度优先算法的初步概念了解。

有了这些思维,为我后面学习一些更难的算法打下了相应的基础。当然,还得需要足够多的题目去锻炼我们的思维能力,接下来我为大家推荐一些比较经典的题目,难度大概是由易到难,具体链接我就不放了呜呜呜,时间快不够了,我就大概写一下吧,有需要的小伙伴直接leetcode搜索即可。

二叉树前序、中序和后序遍历。

求二叉树的节点数,求二叉树的叶子节点数,求二叉树的深度,求二叉树第k层的节点。

判断两颗二叉树是否相同,判断一颗二叉树是不是另一颗二叉树的子树。

翻转二叉树,镜像二叉树。

二叉树层序遍历和反层序遍历,求二叉树两个节点的公共祖先。

其中层序遍历和求公共祖先这两道题是目前我做到的最难的题,非常值得思考!

好了,今天的内容就先到这里,大家新年快乐呀!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值