第五章学习心得

Posted jacqueline--

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章学习心得相关的知识,希望对你有一定的参考价值。

第五章的中,我们学习了树和二叉树,相比前面的内容,我感觉这部分会难一点点,特别是树的存储结构,根据不同情况会有各种存储结构,如果理解不够深刻,在后面使用这个结构体来完成代码的时候就会遇到挺多麻烦的。在这次小组合作中,我开始写的代码是这样的(我贴一下这个定义和构造树的函数),我这里是想用child指向第一个孩子结点,剩下的孩子结点串成链表接上去,但是事实是,操作贼麻烦,而且,也没接上。后来查了查,发现,其实还可以再弄一个结构体,来放剩下的非第一个孩子结点的结点,这样操作会更简单。

typedef struct node
{
    int data;
    struct node *child;
}node;
typedef struct
{
    node num[100001];
    int root;
}tree;

//构造树
void Creat(tree &t, int n)
{
    bool check[100001] = {false};//找根结点 
    for(int i=1; i<=n; i++)
    {
        int m;
        cin >> m;
        if(m==0)    continue;//如果0个孩子,就直接跳出这次循环,进行下一次就好了 
        if(m==1)//如果一个孩子,直接输入 
        {
            cin >> t.num[i].data;
            t.num[i].child=NULL;
            check[t.num[i].data]=true;
        }
        if(m>=2)//2个以上孩子 
        {
            cin >> t.num[i].data;//先输入第一个孩子的数据 
            check[t.num[i].data] = true;
            node *l = new node;//l链表用来放剩下的孩子,l有头结点 
            node *p;//辅助指针,每次循环结束指向最后输入的孩子的指针域 
            p=l->child;
            for(int j=1; j<m; j++)
            {
                node *s = new node;
                cin >> s->data;
                check[s->data] = true;
                p = s;
                p = p->child;    
            }
            p=NULL;
            t.num[i].child = l->child;
        }
    }
    for(int i=1; i<=n; i++)
    {
        if(check[i]==false)
        {
            t.root=i;
            break;
        }
    }
}

 

在遍历二叉树那里,开始学习的时候遇到一些麻烦,特别是计算二叉树的深度时,最后一句:return NodeCount(T->lchile)+NodeCount(T->rchile),后来画了图,并且通过手动编译来一步步知道了这句会怎么运行。

在5.6那一节中,感觉孩子兄弟法有点抽象。

对于本次作业和实践,看完带你打代码的视频,我又把代码自己复现了一遍来加深印象,数的同构那道代码没能自己独立打出来,最后是在网上找了参考资料自己模仿,完成了代码。

第五章学习,没有之前4章这么顺利,因此,要反省一下自己做不好的原因,在下一章要更好得完成学习任务。

以上是关于第五章学习心得的主要内容,如果未能解决你的问题,请参考以下文章

第五章心得

第五章心得

数据结构第五章学习心得

数据结构第五章学习心得

第五章 心得体会

Android深度探索——第五章读书笔记及心得