非线性结构
树
树定义:
专业定义:1.有且成为根的结点
2.有若干互不相交的子树,这些子树本身也是一颗树
通俗定义:
1.树是由结点和边组成
2.每个结点只有一个父结点但可以有多个子结点
3.但有一个结点例外,该借点没有父结点,此结点为根结点
专业术语:
结点 父结点 子结点
子孙 堂兄弟
深度:从根结点到最底层结点的层数称之为深度,根结点为第一层
叶子结点:没有子结点的结点
非终端结点:实际是非叶子结点
度:子结点的个数成为度
树的分类
一般树:任意一个结点的子结点的个数都不受限制
二叉树:任意一个结点的子结点个数最多两个,且子结点的个数不可更改
二叉树的分类:一般二叉树、满二叉树(在不增加数的层数的前提下,无法再多添加一个结点的二叉树就是满二叉树)、完全二叉树(如果只是删除满二叉树最底层最右边的连续若干个结点,这样形成的二叉树就是完全二叉树)
森林:N个互不相交的数的集合
数的存储
二叉树的存储:连续存储[完全二叉树]
优点:查找某个结点的父结点和子结点(也包括有没有子结点)的速度很快
缺点:耗用内存过大
链式存储:
应用:
树是数据库中数据组织一种重要形式
操作系统子父进程的关系本身就是一棵树
面向对象语言中类的继承关系本身就是一颗树
赫夫曼树