第五章学习小结

这一章学习了树的定义、二叉树的性质和存储结构、树和森林的转化、遍历等,以及哈夫曼树的概念和构造算法

首先是树的一些定义和性质,刚开始接触时还是比较懵的,对一些术语不太熟悉,对性质也不太理解,后面在几次计算题的运用过程中才逐渐掌握。

然后是树的存储结构

树的存储结构是建立在前几章的基础上的,有多种表示方法,非常灵活,可以根据不同的需要选择合适的结构

 

对于二叉树,要实现先序、中序、后序遍历,可以用二叉链表表示法

 1 typedef struct bitnode//二叉链表
 2 {
 3     char data;
 4     struct bitnode *left, *right;
 5 }bitnode, *bitree;

在一些情况下,用顺序存储更加简便

 1 typedef struct node
 2 {
 3     char data;
 4     int lchild;
 5     int rchild;
 6 }node;
 7 
 8 typedef struct
 9 {
10     node data[10];
11     int r;
12 }tree;

在其他特殊的树中,还可以使用数组和链表相结合的方式进行存储。

通过对树的学习,也更深入了解了递归的应用,在树的操作过程中很多重复操作都是要通过递归实现的,比如二叉链表的遍历

void inordertraverse(bitree t)//中序遍历
{
     if(t)
     {
        inordertraverse(t->left);
        cout<<t->data;
        inordertraverse(t->right);
     }
}

在pta的实践1中,通过树的层次遍历则更深入接触了队列的应用,对队列的操作有了进一步的认识

 

在做这周的pta作业实践1时做了很久没做出来,看了spoc里的教程才懂,学到了新的方法

这周的小组任务依然完成得不是很好,最开始出现了段错误卡了很久,问题是出在maxsize上,因为循环是从1开始不是从0开始,所以maxsize的值要+1,没注意到这个问题。此外,又再一次漏掉了释放内存,吸取这次的教训,以后写代码多注意内存的问题,避免再出现这种错误。

 

posted @ 2020-05-31 12:24  1907陈航  阅读(129)  评论(0编辑  收藏  举报