二叉树操作,先思考两个问题:是否可以递归;用什么序列
递归:可以分解,且每次递的问题是同一个,归的时候调用函数自己。
序列:释放二叉树,应该用后序。
后序递归
(伪代码)
if (*T)
{
if((*T)->lchild)
DestroyBiTree(&(*T)->lchild);
if((*T)->rchild)
DestroyBiTree(&(*T)->rchild);
free(*T);
*T=Null;
}
//这就是递归的算法分析,对每一个结点都看是否存在,然后看左孩子是否存在,销毁左孩子;右孩子是否存在,销毁右孩子。