第五章心得

学习树的心得:
1.之前一直喜欢用链表,以为链表是万能的,知道学到树之后发现数组有时候比链表更合适。写同构树这道题时一开始我一直用链表来实现,也以为输入的数据是从
根节点开始的,然后代码快写完了才发现全部错了,于是虚心地把数组存储重新看了一遍,学会了用bool来寻找根节点,自己也思考出来如何在数组上实现递归,递
归真的是一个很神奇很方便的方法。其实在之前的栈,递归我学的很不耐烦,因为我不会只看当层来了解整体,我必须把递归从头到尾的过程思考一遍才能弄懂这个递
归,但树的学习可以说真的帮助了我,现在我只需要想“一个parent有两个child,我只需要进行这两个child的操作就可以了,因为child也是parent,会重复我的操作”
而所有的递归其实都是这个道理。
不过我在写题使也有烦恼,因为递归很难利用&从底层传多个值,我写的函数的参数要对所有的递归过程负责,不过在别的地方用点心思这个问题也能解决。
1.bool找根节点
bool check[10]={false}
bool*check;
check=new bool[n]();//加空圆括号要求系统赋初始值,但不能自己赋值
2.递归
int compare(bitnode tree[],char list[],int num1,int num2)
{
    int flag1=0;
    int flag2=0;
 
if(tree[num1].data==list[num2])
{
 
if(tree[num1].lchild==-1&&tree[num1].rchild==-1)
return 1;
flag1=compare(tree,list,tree[num1].lchild,num2+1);
flag2=compare(tree,list,tree[num1].rchild,num2+1);
if(flag1==0&&flag2==0)
return 0;
    
else
return 1;
    
}
else
return 0;
这次我终于记得写delete了。
 
 
 
 
posted @ 2020-05-31 20:51  李若琳  阅读(111)  评论(0编辑  收藏  举报