1

我有一个如下所示的预购遍历函数:

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);
    }
}

但不幸的是,它的效果并不好。我想知道如何解决这个问题,也许我做错了一些简单的事情。或者它可能是完全错误的。

4

1 回答 1

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);
    }
}
于 2012-11-28T16:29:12.410 回答