| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2699 人关注过本帖
标题:二叉树的销毁,看不懂啊,求解释!
只看楼主 加入收藏
魏新建
Rank: 2
等 级:论坛游民
帖 子:55
专家分:86
注 册:2012-2-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
二叉树的销毁,看不懂啊,求解释!

typedef struct node
{
    char *data;
    struct node*lchild;
    struct node*rchild;
}Bnode;
void Destory(Bnode**root)
{
    if((*root)!=null&&(*root)->lchild!=null)
        Destory(&(*root)->lchild);
    if((*root)!=null&&(*root)->rchild!=null)
        Destory(&(*root)->rchild);
    if(*root==null||(*root)->lchild==null)
      return null;
}
书上说这是将根节点为root的子树销毁,函数采用了递归算法。但是我看不懂,函数有销毁子树吗,好像都在判断,并没有实际销毁的语句啊?
搜索更多相关主题的帖子: void 算法 return 二叉树 null 
2012-04-07 22:07
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:10 
void Destory(Bnode**root)
 {
     if((*root)!=null&&(*root)->lchild!=null)
         Destory(&(*root)->lchild);
     if((*root)!=null&&(*root)->rchild!=null)
         Destory(&(*root)->rchild);
     free(*root);
 }

这样吧。

另外这个不需要用指针的指针吧。直接用指针就行。因为函数没有改变指针本身的值。
 
2012-04-07 22:36
Dick_G
Rank: 2
等 级:论坛游民
帖 子:21
专家分:84
注 册:2012-4-7
收藏
得分:10 
用到了递归调用的,
void Destory(Bnode**root)
if((*root)!=null&&(*root)->lchild!=null)先判断if里面的语句是否成立,表达式的值为真的时候就执行下面的这个语句
 Destory(&(*root)->lchild);这里就用到了递归调用!
当判断到最后的时候连个IF语句都不成立,就执行RETURN NULL;
 
 
2012-04-08 10:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
简单的递归  哪里看不懂

                                         
===========深入<----------------->浅出============
2012-04-08 16:39
魏新建
Rank: 2
等 级:论坛游民
帖 子:55
专家分:86
注 册:2012-2-17
收藏
得分:0 
明白书上写的了,谢谢各位大神的指导。
2012-04-08 22:38
快速回复:二叉树的销毁,看不懂啊,求解释!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011360 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved