【发布时间】:2019-09-04 02:24:49
【问题描述】:
我必须做一个函数,给定一个 int n 和一个二叉搜索树,我必须将 bst int 的级别 n 转换为一个链表。 例如,如果给定数字 2 和这棵树
2
/ \
5 3
我必须用 5 - 3 做一个喜欢的列表
我无法到达给定的级别,然后将每个节点都放在该级别,因为如果我确实达到了该级别,我不知道如何到达下一个节点。意思是,我只能在一个分支上达到这个级别,而且我想不出任何递归方式。
所以这是 bst 和链接链的结构:
struct nodo {
info_t dato;
nodo *anterior;
nodo *siguiente;
};
struct rep_cadena {
nodo *inicio;
nodo *final;
};
struct rep_binario {
info_t dato;
rep_binario *izq;
rep_binario *der;
};
这是我想不通的功能:
cadena_t nivel_en_binario(nat l, binario_t b)
我已经尝试使用我已经制作的另一个函数来计算树的高度,但我无法在想要的水平上停下来。
nat altura_binario(binario_t b) {
if (b==NULL) return 0;
else return maximo(altura_binario(b->izq), altura_binario(b->der))+ 1;
}
其中 maximo() 返回两个给定数字之间的最大数字。
【问题讨论】:
标签: c linked-list binary-search-tree nodes