-2

我想实现对现有二叉树执行前序、中序和后序遍历的函数。

然后应该通过预定义的测试功能显示这些遍历

这是我到目前为止的预购遍历

uint64_t i = 0;
int *binarytree_prefix(binarytree *tree) {
    uint64_t *prefixArray = malloc(inputArrayLength_helper * sizeof(uint64_t));

    prefixArray[i] = tree->value;
    i++;
    if (tree->left != NULL) {
        return (binarytree_prefix(tree->left));
    }

    if (tree->right != NULL) {
        return (binarytree_prefix(tree->right));
    }
}

我的想法是,它将当前节点的值插入到数组中,然后增加数组中的位置并在左侧和右侧树上进行递归,但这不起作用。我希望有人能够帮助我让它运行

我所做的是使用前序遍历进行深度优先搜索,然后包含数组以用当前值填充它

main 中的测试函数:

int *prefixArray = bintree_prefix(tree);

printf("Prefix notation : ");
for(uint64_t i = 0; i < inputArrayLength; i++) {
    printf(" %d", prefixArray[i]);
}
printf("\n");

free(prefixArray);
4

1 回答 1

1

好的,经过一些不同的代码变体,我终于得到了正确的解决方案

对于那些有兴趣的人

int *bintree_prefix(bintree *tree)
{
int *prefixArray = malloc(17*sizeof(uint64_t));
return (bintree_prefix_visited(tree, prefixArray));
}
int bintree_prefix_visited(bintree *tree, int *prefixArray)
{
if (tree!=NULL)
    {
    prefixArray[a]=tree->value;
    a++;
    bintree_prefix_visited(tree->left, prefixArray);
    bintree_prefix_visited(tree->right, prefixArray);
    }
return prefixArray;
}
于 2014-06-01T06:20:25.427 回答