【发布时间】:2016-09-25 16:16:30
【问题描述】:
我尝试编写一个函数,它返回一个整数数组,该数组包含二叉树的节点值,即节点值必须出现在其左右子节点的值之前。
如果 root 为 NULL,则返回 NULL
对于每个节点,左孩子都在右孩子之前
例如;
int *a = preorder(bt1);
for (i=0; i<3; i++)
printf("%d ", a[i]);
>2_1_3_
这是我的工作,但它不起作用,我的代码可能出在哪里?
int* preorder(TreeNode *root) {
int *a = malloc(sizeof(int)*50);
int i=0;
if(root == NULL)
return NULL;
else {
if(root != NULL) {
a[i] = root->val;
i++;
preorder(root->left);
preorder(root->right);
return a;
}
}
}
【问题讨论】:
-
分配没有意义。究竟是什么不清楚?
-
每次调用
preorder都会将结果存储到一个不同的数组中。这显然不是你想要的。您需要将数组传递给每个preorder调用。
标签: c binary-tree