明白遍历二叉树的来看看

来源:百度知道 编辑:UC知道 时间:2024/05/15 11:07:31
Status PostOrderTraverse(BiTree T,Status(* Visit)(TElemType e))
{
if(T)
{
if(PostOrderTraverse(T->lchild,Visit))
if(PostOrderTraverse(T->rchild,Visit))
if(Visit(T->data))
return OK;
return ERROR;
}
return OK;
}
有个疑问
if(PostOrderTraverse(T->lchild,Visit))
if(PostOrderTraverse(T->rchild,Visit))
if(Visit(T->data))
这3个if是不是当第一个运行成功了在运行第2个第二个运行成功了在运行第3个?

这是一个后序遍历,if(PostOrderTraverse(T->lchild,Visit)是遍历左子树,第二个是遍历右子树,最后遍历中子树,你以中子树为参照物,他在哪就是什么遍历,后序遍历的顺序也就是“先左再右最后中”

对,这是三个if的嵌套。
代码风格不好,推荐使用if后要缩进,而且一定要写成else return ERROR;这样配对儿会比较好看

这是一个递归函数