欢迎来到我的博客!
在这里博主恭喜大家已经完成的线性表等数据结构的学习,今天咱们正式进入二叉树的一个大章节的。在这个章节里,我们的学习难度会有一个跃升。但是我相信,跟着博主的步伐学习,我们一定可以轻松学懂!
在这里,博主附上咱们数据结构学习的一个专栏,如果前面的知识还有不明白的伙伴们,可以先食用专栏哦!
那么这里博主先安利一下一些干货满满的专栏啦!
数据结构专栏:手撕数据结构 这里包含了博主很多的数据结构学习上的总结,每一篇都是超级用心编写的,有兴趣的伙伴们都支持一下吧!
算法专栏:算法 这里可以说是博主的刷题历程,里面总结了一些经典的力扣上的题目,和算法实现的总结,对考试和竞赛都是很有帮助的!
力扣刷题专栏:跟着博主刷Leetcode 想要冲击ACM、蓝桥杯或者大学生程序设计竞赛的伙伴,这里面都是博主的刷题记录,希望对你们有帮助!
C的深度解剖专栏:C语言的深度解剖 想要深度学习C语言里面所蕴含的各种智慧,各种功能的底层实现的初学者们,相信这个专栏对你们会有帮助的!
朋友们,这就是树。
当然,这不是我们要学习的树,这是我们要学习的树
树如果要存储数据,那可比线性表麻烦多了,我们在储存值的同时,我们还要体现节点和节点之间的关系。
我们比较容易想到的是这种定义方式:
但是问题是,一个节点是没有限定多少个孩子的,如果要这样搞,我们可以考虑用一个vector
存我们的指针。
但是最优的定义方法:左孩子右兄弟法:
这种定义是什么意思呢,其实它可以很好的定义我们的树,如图:
看到这个图,我们应该就可以明白,这种定义方式的精妙之处了吧。
我们的文件系统其实就是一棵多叉树。
如Linux的文件系统:
二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。
满二叉树
完全二叉树
相信大家看到这里,已经对二叉树有了一定的了解了,当然,这只是最最基础的一些概念和性质,但同时它们也是最重要的,我们是必须要掌握的。如果你感觉这篇博客对你有帮助的话,别忘了一键三连再离开哦!