数据结构 第五章学习小结
第五章是关于树与二叉树的学习
首先在第一节的树与二叉树的学习中,我们应该要掌握属的一些基本术语如:结点的度指的是结点拥有的子树数,有序树和无序树的概念;而在二叉树的定义当中,我们要注意到左右子树为空的情况以及空二叉树。
然后在第四节的二叉树的性质学习当中,需要区分的是满二叉树与完全二叉树的区别;(在我的理解上完全二叉树就是直接在满二叉树上进行删减);还有基本定理,我最容易忘记的就是,在一棵二叉树上,度为0的结点n0=n2+1.,还有一些关于二叉树的深度的求解等的求解,比较简单,在此就不一一列举。在存储结构上,我们最需要注意的是二叉树的链式存储。下面用代码来表示:
typedef struct BiTNode{ int data;//数据域 struct BiTNode *lch,*rch;//创建左右孩子指针 }BiTNode,*BiTNode;
第五节是遍历二叉树:我们要熟悉先序,后序,中序的遍历操作(分别为根左右,左右根,左根右);然后就是一些算法的实现(中序遍历递归算法,先序遍历顺序建立二叉链表,计算二叉树的深度以及二叉树的节点个数),这些还是要多看看书来熟悉,切记!切记!切记!
第六节是树和森林,这里由我们需要掌握的代码。
关于孩子链表的树的定义:
#define MAXSIZE 100 typedef struct ChildNode{//孩子节点 int data;//孩子的下标 struct ChildNode *next;//指向下一个孩子 }ChildNode; typedef struct PrNode{//亲节点 int parent;//亲节点下标 char data;//就是ABCD那些数据域 ChildNode *headchildren;//指向孩子链表的头指针 }PrNode; typedef struct Tree{//树的定义 PrNode a[MAXSIZE]; int root;//根节点下标 int n;//节点个数 }Tree;
第七节是哈夫曼树:要注意权值和路径等的定义,还有哈夫曼树的构造过程,比较简单,多回归课本就好!
然后,自己的上周的小测成绩比较差,要好好反省一下!