C++ 如何填充非线性树
如何使用以下结构填充树 数据是“A,B,C,D,E,F,G,H,I,J”,所以在人口之后,它的结构是这样的 我可以很容易地使用递归和函数,但有人告诉我,我不能使用函数,只能使用循环 这是我正在使用的structC++ 如何填充非线性树,c++,algorithm,tree,binary-tree,C++,Algorithm,Tree,Binary Tree,如何使用以下结构填充树 数据是“A,B,C,D,E,F,G,H,I,J”,所以在人口之后,它的结构是这样的 我可以很容易地使用递归和函数,但有人告诉我,我不能使用函数,只能使用循环 这是我正在使用的struct struct Tree { int value; Tree* left; Tree* right; }; 这可以通过队列来完成 对于输入中的每个元素: 将其添加到队列中 然后将其添加到最后一个节点,或者作为左子节点,或者如果它已经有左子节点,则作为右子节点
struct Tree
{
int value;
Tree* left;
Tree* right;
};
这可以通过队列来完成 对于输入中的每个元素:
- 将其添加到队列中
- 然后将其添加到最后一个节点,或者作为左子节点,或者如果它已经有左子节点,则作为右子节点
- 如果最后一个节点的两个子节点现在都已填充,则将最后一个节点作为队列中的出列项
list = A,B,C,D,E,F,G,H,I,J
last = list.removeFront()
while !list.empty
node = list.removeFront()
queue.enqueue(node)
if last.left == NULL
last.left = node
else
last.right = node
last = queue.dequeue()
这可以通过队列来完成 对于输入中的每个元素:
- 将其添加到队列中
- 然后将其添加到最后一个节点,或者作为左子节点,或者如果它已经有左子节点,则作为右子节点
- 如果最后一个节点的两个子节点现在都已填充,则将最后一个节点作为队列中的出列项
list = A,B,C,D,E,F,G,H,I,J
last = list.removeFront()
while !list.empty
node = list.removeFront()
queue.enqueue(node)
if last.left == NULL
last.left = node
else
last.right = node
last = queue.dequeue()
这是关于建立一个完整的二叉树。我们可以使用数组来存储节点,关键是找到父节点
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;
}
结构树
{
int-val;
树*左,*右;
Tree():val(0)、left(NULL)、right(NULL){}
};
树*buildCompleteBinaryTree(常量向量和值)
{
size_t len=values.size();
if(len这是关于构建一个完整的二叉树。我们可以使用数组来存储节点,关键是找到父节点
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;
}
结构树
{
int-val;
树*左,*右;
Tree():val(0)、left(NULL)、right(NULL){}
};
树*buildCompleteBinaryTree(常量向量和值)
{
size_t len=values.size();
如果(len)你有树的类文件吗?如果你不给我们所有的信息,很难告诉你如何继续。我使用简单结构(c++)。添加到我的问题中。你有树的类文件吗?如果你不给我们所有的信息,很难告诉你如何继续。添加到我的问题中。