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