【发布时间】:2012-11-28 16:21:18
【问题描述】:
我有一个如下所示的预购遍历函数:
void listInPreOrder(node* hd){
if(hd != NULL) {
printf("%d, ", hd->value);
listInPreOrder(hd->left);
listInPreOrder(hd->right);
}
}
这实际上是可行的,但我认为使它成为 post order 就像这样简单
void listInPostOrder(node* hd){
if(hd != NULL) {
listInPreOrder(hd->left);
listInPreOrder(hd->right);
printf("%d, ", hd->value);
}
}
但不幸的是,它并没有那么好用。我想知道如何解决这个问题,也许我做错了一些简单的事情。或者它可能是完全错误的。
【问题讨论】:
-
@OstapHnatyuk,你没有改变递归调用......
-
两者的代码相同,只是将打印行移到了底部。也尝试发布其他代码,因为仅通过函数调用很难确定故障。例如。你如何构造节点...
-
是的,它应该是这样的。我认为这就是后序遍历的递归编码方式。这就是我想知道的。据我所知,函数调用是正确的。请问下单功能是不是有问题。
-
@OstapHnatyuk。后序遍历的想法是您也按后序遍历子树。查看 WhosCraigs 的答案。
标签: c recursion tree binary-tree postorder