二叉树的后序/预订遍历

时间:2012-11-28 16:21:18

标签: c recursion tree binary-tree postorder

我有一个预订遍历功能,如下所示:

void listInPreOrder(node* hd){
if(hd != NULL) {
        printf("%d, ", hd->value);
        listInPreOrder(hd->left);
        listInPreOrder(hd->right);
    }
}

这实际上是有效的,但我认为将它发布到订单就像这个一样简单

void listInPostOrder(node* hd){
if(hd != NULL) {
        listInPreOrder(hd->left);
        listInPreOrder(hd->right);
        printf("%d, ", hd->value);
    }
}

但遗憾的是它不能很好地运作。我想知道如何解决这个问题,也许我正在做一些简单的错误。或许这是完全错误的。

1 个答案:

答案 0 :(得分:9)

你怎么改变这个:

void listInPostOrder(node* hd){
if(hd != NULL) {
        listInPreOrder(hd->left);  // PRE order ???
        listInPreOrder(hd->right); // PRE order ???
        printf("%d, ", hd->value);
    }
}

到此:

void listInPostOrder(node* hd){
if(hd != NULL) {
        listInPostOrder(hd->left);
        listInPostOrder(hd->right);
        printf("%d, ", hd->value);
    }
}