二叉树清空函数解决方法
二叉树清空函数C/C++ codeSearchTree MakeEmpty(SearchTree T){if(T!NULL){MakeEmpty(T-Left)MakeEmpty
二叉树清空函数
C/C++ codeSearchTree MakeEmpty(SearchTree T)
{
if(T!=NULL)
{
MakeEmpty(T->Left);
MakeEmpty(T->Right);
free(T);
}
return NULL;
}
请问这个递归函数到底是怎么进行的?
[解决办法]一般来说,递归函数都要处理两种状态。一种是递归中状态,一种是递归边缘状态。
大多数情况下,递归函数在处理递归中状态,但是递归是不能无限递归的(否则有可能是死循环了),它始终要到达边缘状态。
对于你的这个递归函数的代码,递归中状态是 (T != NULL),递归边缘状态是 (T == NULL)
可以看出,你的递归边缘状态什么事情也没做,就返回了
[解决办法]清空二叉树,只能后序遍历 清空!
[解决办法]