数据学习结构心得——树
我觉得树这部分挺难,但是挺有意思的,内容比较多,为了考试整理一波,里面有很多我自己的思考和看法,有的方法并不一定好理解而且有很多瑕疵,希望大家可以多包含,有些图片偷了老师的ppt,我觉得老师应该不会介意吧哈哈哈哈。内容主要分为以下几块:
1.树及其特点、性质及基本概念,森林
2.二叉树定义、性质及其相关知识点
3.哈夫曼树
树及其特点、性质及基本概念,森林
树的定义:树是由 n (n ≥ 0) 个结点组成的有限集合。如果 n = 0,称为空树;如果 n > 0,则有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱;除根以外的其他结点划分为 m (m ≥ 0) 个 互不相交的有限集合T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的子树。
树的特点:每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继。
树的一些基本概念:
结点:存储数据元素和指向子树的链接,由数据元素和构造数据元素之间关系的引用组成。
孩子结点:树中一个结点的子树的根结点称为这个结点的孩子结点。
双亲结点:树中某个结点有孩子结点(即该结点的度不为0),该结点称为它孩子结点的双亲结点,也叫前驱结点。
兄弟结点:具有相同双亲结点(即同一个前驱)的结点称为兄弟结点。
结点的度:结点所有子树的个数称为该结点的度。
树的度:树中所有结点的度的最大值称为树的度。
叶子结点:度为0的结点称为叶子结点,也叫终端结点。
分支结点:度不为0的结点称为分支结点,也叫非终端结点。
结点的层次:从根结点到树中某结点所经路径的分支数称为该结点的层次。根结点的层次一般为1(也可以自己定义为0),这样,其它结点的层次是其双亲结点的层次加1.
树的深度:树中所有结点的层次的最大值称为该树的深度(也就是最下面那个结点的层次)。
有序树和无序树:树中任意一个结点的各子树按从左到右是有序的,称为有序树,否则称为无序树。
如图,该树的深度为4(设根节点为1),树的度为3,节点A度也为3。
森林的定义
N(N >= 0&#x