读书人

二叉树清空函数解决方法

发布时间: 2012-05-27 05:42:30 作者: rapoo

二叉树清空函数

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)调用之后的吗?

读书人网 >C++

热点推荐