
目录
前言:
树
树的相关概念
树的表示
二叉树
概念
两个特殊的二叉树
二叉树的性质
前面我们已经学习顺序表、链表、栈以及队列这些结构,他们都有一个特点:都是线性结构。那与之相对的非线性结构是怎样的呢?我们接下来就一起看看非线性结构吧!!!
树是一种非线性的数据结构,它由n(n>0)个有限节点组成的一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂着的数,也就是根在上,叶子在下。
节点的度:一个节点含有的子树的个数称为该节点的度;如上图根节点A的度为6;
叶节点或者终端节点:度为0的节点称为叶节点;如上图H、I等为叶节点;
非终端节点或分支节点:度不为0;
双亲节点或父节点:若一个节点有子节点,那么这个节点就为子节点的父节点;如A是B的父节点;
孩子节点或子节点:一个节点含有;子树的根节点称为该节点的子节点;如B是A的子节点;
兄弟节点:具有相同父节点的节点互称为兄弟节点;如B、C节点为兄弟节点;
树的度:一颗树中,最大的节点的度称为树的度;如上图树的度为6;
节点的层次:从根算起,根为第1层,根的子节点为第2层,以此类推;
数的高度或深度:树中节点的最大层次;如上图,深度为4;
堂兄弟节点:双亲在同一层的节点互为堂兄弟节点;
节点的祖先:从根到该节点所经分支上的所有节点;
子孙:以某节点为根的子树中任一节点都称为该节点的子孙;
森林:由m(m>0)颗互不相交的树的集合称为森林。
树结构相对线性表就比较复杂,要存储表示起来就比较麻烦,既然保存值,又要保存节点之间的关系,实际中树有很多种表示方法如:双亲表示法;孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。这里看一下孩子兄弟表示法。
这里的孩子节点指向没有特殊要求,到是为了便于理解最好指向最左边的孩子。
二叉树是n个节点的集合,这个集合要么是空,要么是有根节点和左子树和右子树的二叉树组成。
根据上述定义可知:
在二叉树中每个节点做多有两个子节点,也就是一颗树最大的度为2。
在二叉树中根节点的子树有左右之分,在左边的为左子树,右边为右子树,顺序不能颠倒
二叉树为空就是只有空节点。
对于任意的二叉树都是由以下几种情况复合而成:
二叉树和树的两个主要区别如下:
1.树中节点的最大度数没有限制,而二叉树节点的最大度数为2,也就是说,二叉树的节点的子树的数量不能超过2.
2.树的节点无左右之分,而二叉树的节点有左右之分。
满二叉树:在二叉树中除了最底层的节点之外,所有的节点有两个孩子。也就是每一层的节点数都达到了最大值,即:如果一个满二叉树有k层,那么它的节点数为2^k - 1。
完全二叉树:除最底层外,每一层的节点数都达到最大值,并且最后一层的节点从左到右是连续的。
在上面图片中如果将完全二叉树的最后一层中的节点 H I J K 任意去掉一个,则构不成完全二叉树;
今天就到这了,以上如果有错误,恳请指正!!!!