俞敏洪说:我们每一个人,都应该像树一样的成长,即使我们现在什么都不是,但是只要你有树的种子,即使你被踩到泥土中间,你依然能够吸收泥土的养分,自己成长起来。当你长成参天大树以后,遥远的地方,人们就能看到你;走近你,你能给人一片绿色。活着是美丽的风景,死了依然是栋梁之才,活着死了都有用。这就是我们每一个同学做人的标准和成长的标准,开头小编先罗嗦一下,给各位小伙伴来一段心灵鸡汤,今天我们的知识点就从树开始说起。
树,原指木本植物之总名,主要由根、干、枝、叶、花、果组成。随着计算机的发展,在数据结构中树被引申为由一个集合以及在该集合上定义的一种关系构成的,由根结点和若干颗子树构成的。二叉树是每个节点最多有两个子树的有序树。二叉树常被用于实现二叉查找树和二叉堆。值得注意的是,二叉树不是树的特殊情形。在图论中,二叉树是一个连通的无环图,并且每一个顶点的度不大于2。有根二叉树还要满足根结点的度不大于2。有了根结点后,每个顶点定义了唯一的根结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。软考和自考中多处设计到树和二叉树,今天就树和二叉树,小编做个简单的总结,小伙伴一起学习ha。
该博文小编主要从三个方面进行讲解,首先基本概念,其次树的遍历,最后二叉树的遍历,首先我们来看下面一张图,结合这张图,小编来讲解一下树的基本概念:
树的基本概念
树的度:所有结点度当中,度最高的一个。(上图树的度是3)。
叶子结点:如图中,3、5、6、7、9、10,都属于叶子节点,即叶子节点指的是度为0的节点。
分子结点:除了叶子结点,其他的都称为分之结点,和叶子结点构成互补的关系,图中1、2、4、8。
内部结点:分之结点除了根结点以外的,图中2、4、8。
父结点:如5号结点就是2号结点的子结点。
子结点:2号结点是5号结点的父结点。
兄弟结点:5、6、7称为兄弟结点,出自同一个父亲2号结点。这三个概念是一个相对的概念。
层次:0层、1层、2层、3层。
还有一个公式:总结点=所有度结点的和+1(应该是父结点)
树的遍历
我们还是来看下面这张图:
前序遍历:先从根部出发,然后由左向右,一颗一颗树来完成遍历。先访问根再访问叶子结点,这就是我画出来的前序遍历图,箭头的方向表示遍历的顺序,a为起点。
前序遍历的结果为1、2、5、6、7、3、4、8、9、10。
后序遍历:顾名思义,就是从叶子结点出发,先遍历叶子结点再到根结点,最后到父结点。我画出顺序可能会更直观点。如下图:
后序遍历的结果是:5、6、7、2、3、9、10、8、4、1。
层次遍历:按0层、1层、2层、3层,从左到右来遍历。
结果是:1、2、3、4、5、6、7、8、9、10
我们接着就可以来理解二叉树的重要的特性:
我们找五颗二叉树来进行分析:相互进行对比分析,如下图:
1、二叉树中,第i层上最多有2的i次方个结点(i>=0)。这个很基本,这也是二叉树和树的区别。
2、深度为K的二叉树至多有2的(k+1)次方 -1个结点(k>=0)。(深度为二叉树中层数最大的叶节点的层数),满二叉树的深度为2,则共有7个结点。
3、对任何一颗二叉树,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1;(一定不要忘了根结点的度也是2)。
二叉树的遍历
结合下面这张图说说二叉树的遍历
首先,我们来看前序遍历,如下图:
遍历的结果是:1、2、4、5、7、8、3、6。从根结点分两部分,先把左边的遍历完,都是从左到右的。
中序遍历,如下图
中序遍历的结果4、2、7、8、5、1、3、6.
后序遍历,如下图:
后序遍历的结果为4、8、7、5、2、6、3、1。
层次遍历,如下图:
层次遍历的结果为1、2、3、4、5、6、7、8。
小编结语:整篇博文从简单的一些概念说起,其次树的遍历,最后二叉树的遍历,对于树和二叉树的相关知识小编就介绍到这里,欢迎小伙伴们一起学习交流,软考之路,未完,待续......