Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 二叉树的后序/前序遍历_C_Recursion_Tree_Binary Tree_Postorder - Fatal编程技术网

C 二叉树的后序/前序遍历

C 二叉树的后序/前序遍历,c,recursion,tree,binary-tree,postorder,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(

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

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

你改一下怎么样:

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

@OstapHnatyuk,你没有改变递归调用…两者的代码都是一样的,只是把打印行转置到了底部。还可以尝试发布其他代码,因为仅仅通过函数调用很难确定故障。例如,你是如何构造节点的……是的,它应该是这样的。我认为这就是后序遍历递归编码的方式。这就是我想知道的。就我所知,函数调用是正确的。我想知道邮购的功能是否有问题。@OstapHnatyuk。后序遍历的思想是,您也可以按后序遍历子树。看看谁的答案。@OstapHnatyuk,你没有改变递归调用……这两个调用的代码都是一样的,只是把打印行移到了底部。还可以尝试发布其他代码,因为仅仅通过函数调用很难确定故障。例如,你是如何构造节点的……是的,它应该是这样的。我认为这就是后序遍历递归编码的方式。这就是我想知道的。就我所知,函数调用是正确的。我想知道邮购的功能是否有问题。@OstapHnatyuk。后序遍历的思想是,您也可以按后序遍历子树。看看谁的答案。德普,是的。。每当我问这样的问题时,我都觉得自己像个白痴。但我花了10分钟试图理解为什么甚至没有阅读函数中的方法调用。@OstapHnatyuk在新的BST遍历递归实现中,这种情况经常发生,您(可能不会)感到震惊。几天前,我在回答一个不同的问题时确实这样做了,所以我对那种“德普”的感觉很熟悉。德普,是的。。每当我问这样的问题时,我都觉得自己像个白痴。但我花了10分钟试图理解为什么甚至没有阅读函数中的方法调用。@OstapHnatyuk在新的BST遍历递归实现中,这种情况经常发生,您(可能不会)感到震惊。几天前,我在回答一个不同的问题时确实做到了这一点,所以我对那种“德普”的感觉相当熟悉。