2022年1月18日学习总结

8:30~9:00

听一篇英语听力

9:30~11:00

看csdn上的如何建立树

代码:

#include<stdio.h>  
  
int main(){  
    char c,ab[100];  
    int num=0,level[100],degree[100]={0},p[100]={0}; //字母数量,每个字母的级别,每个字母的度,每个度的字母数量   
    int depth=-1,i,j,max=0;  
    while(1)  
    {  
        c=getchar();  
        if(c=='\n') break;  
        switch(c)  
        {  
            case '(': depth++; break;     
            case ')': depth--; break;  
            case ',': break;  
            default:  
            num++;  
            ab[num]=c;  
            level[num]=depth;  
            //printf("%c\n",ab[num]);  
            break;   
        }  
    }  
      
    for(i=1;i<=num;i++)  
    {  
        for(j=0;j<level[i];j++)  printf("    ");  
        printf("%c\n",ab[i]);  
    }  
    for(i=1;i<=num;i++)  
    {  
        for(j=i+1;j<=num;j++)  
        {  
            if(level[j]==level[i]) break;  
            if(level[j]==level[i]+1) degree[i]++;  
        }  
          
    }  
    for(i=1;i<=num;i++)  
    {  
        if(degree[i]>max) max=degree[i];  
    }  
    for(i=1;i<=num;i++) p[degree[i]]++;  
    printf("Degree of tree: %d\n",max);  
    for(i=0;i<=max;i++)  printf("Number of nodes of degree %d: %d\n",i,p[i]);  
    return 0;  
}  

然后感觉还是不太理解,继续看了啊哈算法。

11:00~12:00

做英语试卷看了一下数学的函数,等下辅导妹妹学习。

12:00~14:30

辅导妹妹做英语,做数学。

15:00~18:00

听吴学长讲课,然后自己学习树的建立和遍历。

二叉树的特点有:

每一个节点最多有两棵子树,所以二叉树中不存在度大于2的节点,注意,是最多有两棵,没有也是可以的
左子树和右子树是有顺序的,次序不能颠倒,这点可以在哈夫曼编码中体现, 顺序不同编码方式不同
-即使树中某个节点中只有一个子树的花,也要区分它是左子树还是右子树
二叉树一般有五种形态
1.空二叉树
2.只有一个根节点
3.根结点只有左子树
4.根节点只有右子树


二叉树的性质
1:在二叉树的第i层上最多有2^(i-1)个节点
2:深度为K的二叉树之多有2^(k-1)个节点

#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void PreOrderTraverse(BiTree T)//二叉树的先序遍历
{
    if(T==NULL)
        return ;
    printf("%c ",T->data);
    PreOrderTraverse(T->lchild);
    PreOrderTraverse(T->rchild);
}
void InOrderTraverse(BiTree T)//二叉树的中序遍历
{
   if(T==NULL)
       return ;
   InOrderTraverse(T->lchild);
    printf("%c ",T->data);
   InOrderTraverse(T->rchild);
}
void PostOrderTraverse(BiTree T)//后序遍历
{
    if(T==NULL)
        return;
    PostOrderTraverse(T->lchild);
    PostOrderTraverse(T->rchild);
    printf("%c ",T->data);
}
void CreateBiTree(BiTree *T)
{
    char ch;
    scanf("%c",&ch);
    if(ch=='#')
        *T=NULL;
    else
    {
        *T=(BiTree  )malloc(sizeof(BiTNode));
        if(!*T)
            exit(-1);
        (*T)->data=ch;
        CreateBiTree(&(*T)->lchild);
        CreateBiTree(&(*T)->rchild);
    }
}
int main()
{
    BiTree T;
    CreateBiTree(&T);
    PreOrderTraverse (T);
    InOrderTraverse(T);
    PostOrderTraverse(T);
    return 0;
}

然后看了一下洛谷里面的题目,不会T.T

感觉应该改变一下思路,去先去做自己学校网站上面的题目,循序渐进,不能急,知识是一个慢慢累积的过程,先会了小知识点才能覆盖知识面做题目(酱紫安慰自己?)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值