我有一个预排序遍历函数,如下所示:

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

但不幸的是,它没有那么好用我在想怎么解决这个问题,也许我做错了什么或者是完全错了。

最佳答案

你改一下怎么样:

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

关于c - 二叉树的后序/前序遍历,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13609655/

10-11 06:33