数据结构第五章学习小结

本章学习内容:

本章我们学习了一种新的数据结构,“树”结构是一类非线性数据结构。主要学习到二叉树的内容,二叉树有好几个重要的性质。刚开始学这种数据结构的时候,还是觉得比线性结构抽象很多。在后来上课和打代码的时候理解到,二叉树存储结构跟遍历有很大的关系,遍历的结果是将非线性结构的树中结点排成一个线性序列。

这是二叉链表的存储表示:

typedef struct Bitnode
{
  int data;//结点数据域
  struct Bitnode *lchild,*rchild;//左右孩子指针
}Bitnode,*Bitree;

 

同时老师讲解的List Leaves 代码的实现让我非常受益匪浅,比如使用bool数组找出根结点。

void Create(Tree &T)
{
    int n;
    cin>>n;
    bool check[10]={false};//使用check数组用于查找根节点
    char a,b;
    for(int i=0;i<n;i++)
    {
        cin>>a>>b;
        if(a=='-' )
           T.data[i].lch = -1;
        else
        {
            T.data[i].lch = a-'0';
            check[a-'0']=true;
        }
        if(b=='-')
           T.data[i].rch = -1;
        else
        {
            T.data[i].rch = b-'0';
            check[b-'0']=true;
        }
    }
    for(int i=0;i<n;i++)
    {
        if(check[i]==false)
        {
            T.root=i;
            break;
        }
    }
}

 

以及我认为最重要的还是二叉树的遍历方式:先序,中序,后序,以及层次遍历。

 

遇到的困难:在小组合作过程中,困难在于如何建立这些树,这与它的存储结构密切相关,所以,分析树的存储结构尤为重要,也是树的难点,只有树建立起来,之后操作才能够更好的进行。虽然小组作业过程中偶然发现了题目的天梯赛原题,但后面组长调试小组版本的代码中出现了很多段错误问题,同时也没考虑释放内存的问题。所以即使有PTA能跑100分的代码可供参考,我也要吸取别人的长处,对代码不足的地方进行优化,争取能完美复现。

反思:有时候会因为是早课容易走神,没有好好记笔记。同时第五章学习过程中也犯过不少乌龙。我需要端正学习态度,好好记笔记。

posted @ 2020-05-31 18:38  缪芊  阅读(166)  评论(0编辑  收藏  举报