如何使用以下结构填充树
使用数据“A,B,C,D,E,F,G,H,I,J”,因此填充后的结构看起来像这样
我可以使用递归和函数轻松地做到这一点,但是有人告诉我,我不能使用函数,只能使用循环。
这是我正在使用的结构
struct Tree
{
int value;
Tree* left;
Tree* right;
};
最佳答案
这是关于构建完整的二叉树。我们可以使用数组来存储节点,关键是找到父节点。
struct Tree
{
int val;
Tree *left, *right;
Tree():val(0), left(NULL), right(NULL){}
};
Tree* buildCompleteBinaryTree(const vector<int>& values)
{
size_t len = values.size();
if(len <= 0) return NULL;
Tree* trees = new Tree[len];
trees[0].val = values[0];
for(size_t i = 1; i < len; i++)
{
trees[i].val = values[i];
size_t par = (i - 1) / 2;
(i % 2)?(trees[par].left = &(trees[i])):(trees[par].right = &(trees[i]));
}
return trees;
}
关于c++ - 如何填充非线性树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20005881/