【发布时间】:2021-09-13 15:56:21
【问题描述】:
我需要从包含一些零的向量开始创建一个二叉树,其中零表示不存在的节点。例如,如果我得到:
int a[] = {10,4,7,2,3,-1,8,9,-1,2,4,5};
我想要这样的输出:
10
/ \
4 7
/ \ \
2 3 8
/ / \ /
9 2 4 5
我的结构:
typedef struct node {
int n;
struct node * dx;
struct node * sx;
} *Bit_node;
搭建一个节点的方法:
Bit_node bit_new(int n) {
Bit_node new_node = malloc(sizeof(struct node));
new_node -> n = n;
return new_node;
}
构建整棵树的方法:
Bit_node bit_arr2tree(int a[], int size, int i) {
if (i>= size) {
return NULL;
}
if(a[i] != -1) {
Bit_node new_node = bit_new(a[i]);
new_node -> sx = bit_arr2tree(a, size, i*2 +1);
new_node -> dx = bit_arr2tree(a, size, i*2 +2);
}
return new_node;
}
但是在我的实现中,我的树是在不考虑“漏洞”的情况下构建的。有没有办法考虑它们,保持递归策略?
【问题讨论】:
标签: c algorithm recursion binary-tree