第五章学习小结

1、第五章主要学习了与树相关的知识,从二叉树拓展到一棵普通的树,再从一棵普通的树拓展到哈夫曼树,再从树拓展到森林的概念。5-1节学习了树和二叉树的定义,对节点,根节点,叶子结点,深度,度等概念进行了初步的了解。5-4节了解了与二叉树相关的一些性质,其中引出了完全二叉树与满二叉树的概念,从这一节开始也正式开始考虑用存储结构去存储一棵树。书本上介绍了顺序存储和链式存储两种方式,其中顺序存储相对一般的二叉树的话比较浪费空间,所以一般考虑使用二叉链表的方式进行存储。

这是二叉链表比较常用的定义方式

typedef struct BitNode

{

  char data;

  struct TNode *lch, *rch;
}BitNode, *BitList;

基于上面的定义,书本介绍了先序建立二叉链表的方式,然后又给出了先序遍历,中序遍历,后序遍历的算法步骤,也给出了包括计算节点总数,计算深度的算法。

后面有个线索二叉树的知识点我还没有仔细地去看,感觉以后可能会用到,用到再回来补一补。

2、学完了二叉树,就到树了。树的话学习了三种定义的方法,①双亲表示法=>也就是存储结构里面包含了父节点的下标; ②孩子表示法=>在指针域中以链表的形式将所有的子结点都连接起来

③孩子兄弟表示法=>采取左孩子右兄弟的方式进行存储

3、然后的重点就到了哈夫曼树,在上周的学习中,掌握了构造了哈夫曼树的方法,同时了解到了最优树不仅包括用哈夫曼方法构造的树,也包括了他的同构树。

4、然后PTA作业里面在做的时候遇到了一些问题,实践题第二题有个测试点是节点数不同的,之前以为他的意思是节点数不同也可以构成同构树,但是后来发现不是那么回事,

树的同构必须保证节点数量的完全一致。在一些选择题里面有一些不太会的,后面查了资料就好了很多了。

最后总结一下:这章的话知识有点多,不过知识点也比较得集中,类似的东西也比较多,借助这一章我感觉我的递归思维有了比较好的提升,然后需要注意的是在申请数组空间之后一定要记得去回收,

还有 bool *fn=new bool[n]()这种定义方式我记住了,不会忘记了。

 

posted @ 2020-05-30 21:11  江振宇  阅读(124)  评论(0编辑  收藏  举报