首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

二叉树清空函数解决方法

2012-05-27 
二叉树清空函数C/C++ codeSearchTree MakeEmpty(SearchTree T){if(T!NULL){MakeEmpty(T-Left)MakeEmpty

二叉树清空函数

C/C++ code
SearchTree MakeEmpty(SearchTree T) 
{
if(T!=NULL)
{
MakeEmpty(T->Left);
MakeEmpty(T->Right);
free(T);
}
return NULL;
}


请问这个递归函数到底是怎么进行的?

[解决办法]
一般来说,递归函数都要处理两种状态。一种是递归中状态,一种是递归边缘状态。

大多数情况下,递归函数在处理递归中状态,但是递归是不能无限递归的(否则有可能是死循环了),它始终要到达边缘状态。

对于你的这个递归函数的代码,递归中状态是 (T != NULL),递归边缘状态是 (T == NULL)

可以看出,你的递归边缘状态什么事情也没做,就返回了
[解决办法]
清空二叉树,只能后序遍历 清空!
[解决办法]
探讨
我不明白free(T)是什么时候调用的?是在MakeEmpty(T->Right)调用之后的吗?

热点排行