如何在级别上打印树,给定一个结构,该结构保存节点的值及其父节点的值,对于树中的每个节点
How to print a tree on levels, given a struct that holds the value of the node and the value of it's parent, for each node in the tree
>我有一个数组,其中索引是节点的数据,该索引处的值是该节点的父节点。
数组 = {2, 7, 5, 2, 7, 7, -1, 5, 2}
数据 ---- 1, 2, 3, 4, 5, 6, 7, 8, 9
我必须这样打印这个数组:
7 2 1 4 9 5 3 8 6我有一个结构,该结构在两个字段中包含数组中的数据,值和父级,然后我创建了一个 t 数组,用于保存树中每个节点的这些属性。
struct t{
int value;
int parent;
};
t tree[n];
这是我现在想出的。这以正确的顺序打印节点,但我不知道如何添加空格 (" "(,以突出显示树的级别。我希望你们能给我一些想法。
void preetyPrint(t tree[], int n, int root)
{
cout << root;
cout << endl;
for(int i = 0; i < n; i++)
{
if (tree[i].parent == root)
{
preetyPrint(tree, n, tree[i].value);
}
}
}
我很抱歉这个问题的歧义,我是新来的。还在学习发布好问题。有两种方法可以做到这一点:
int depth
方法
您需要再向函数传递一个参数,即int depth
。
从外部代码调用它时,请传递0
以获取深度。
然后,在 prettyPrint()
内部的递归调用中,用 depth + 1
调用。
然后,在您的cout << root;
将其替换为cout << spaces << root;
并添加一些代码,该代码计算由许多空格字符组成的spaces
字符串。 空格数应depth
乘以您想要的缩进。(比如说,2 或 4。spaces
字符串的计算留给读者作为练习。
string indentation
方法
您需要再向函数传递一个参数,即string indentation
。
从外部代码调用它时,请传递一个空字符串。
然后,在 prettyPrint()
内的递归调用中,使用 indentation + " "
调用(假设您希望每个缩进级别为 2 个字符宽(。
然后,在您的cout << root;
将其替换为cout << indentation << root;
相关文章:
- 在树结构.txt文件中搜索节点
- 类成员函数无法访问同一类的私有结构节点?
- 如何在C++中实现节点数任意的通用树数据结构?
- 为什么将函数的返回类型从结构节点*更改为void后,链表的元素没有显示create_ll和显示?
- 如何在级别上打印树,给定一个结构,该结构保存节点的值及其父节点的值,对于树中的每个节点
- 无法使用类型为"结构节点 *"的左值初始化类型为"结构节点 *"的参数
- 用于基于节点的树结构的Python绑定
- 结构之外的节点 * head 有什么作用?
- 为什么树结构比其节点的总和占用更多的空间
- 如何使用指针连接两种不同的节点类型(结构)?
- lower_bound结构节点的类数组中
- C++中的数据结构,插入链表中节点的开头
- 交换树数据结构中根的 2 个子节点指针
- 函数调用中的结构节点* 和节点* 有什么区别?
- 结构节点与标准::列表< >
- 为什么结构 *节点接下来适用于C++中的链表
- 二叉搜索树,分配指针到模板结构节点
- 将txt文件数据分配给链表中的结构节点
- 为什么我得到错误,模板参数需要'结构节点'
- 获取类型的错误 无效使用不完整类型的"结构节点"