打印所有儿童树元素的最佳算法?
Best algorithm for print all children's for tree element?
我想使用智能指针创建一棵树。结果是这样的结构:
struct TreeElement {
int data;
std::shared_ptr<TreeElement> parent;
std::list<std::weak_ptr<TreeElement>> childrens;
}
现在,我想显示特定项目的所有子项。如何做得更好?使用哪种算法?例:
void PrintAllChildrens(TreeElement element) {
for (auto& el : element.childrens) {
...
}
}
示例我有树:
10
1 2
3 4 5
6 7
我想要带有数据 1 的元素 打印所有儿童(1(: 结果:
1
3
6 7
访问/打印(子(树的方法只有 3 种:按顺序、预购、后序。
精确的"最佳"算法取决于问题域。在您的情况下,看起来您想要按顺序打印,这将由
void PrintAllChildrens(TreeElement element) {
// Print current level
std::cout << el.data << std::endl;
for (auto& el : element.childrens) {
if (auto child = el.lock())
PrintAllChildrens(*child);
}
}
您可以使用所需的任何类型的缩进和美化来装饰输出。
如果你有一个函数可以在树中找到一个节点并返回一个指向它的指针,那么你可以使用它来调用打印函数:
void PrintAllChildrens(int data)
{
auto node = FindNode(data);
PrintAllChildrens(*node);
}
相关文章:
- 打印所有儿童树元素的最佳算法?
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 从整数向量向量搜索整数向量的最佳算法
- 绘制线条的最佳算法
- 为一群追逐兔子的狐狸创建蜂群算法的最佳方法
- 找到多组对象的最佳匹配的算法
- 从QTcpSocket上的数据流中连续运行复杂算法的最佳Qt线程解决方案是什么
- 比较阵列相似性的最佳比较算法是什么?
- 最佳页面替换算法
- 在C/C 中实现实时最佳拟合内存分配算法
- 找出所有给定数组中公共元素的最佳算法
- 将集合与集合进行比较的最佳算法
- 哪种算法是求所有子阵列之和的最佳算法
- 删除 2 个给定索引之间的元素的最佳算法
- 合并索引对的最佳算法
- 随机生成一个能被N整除的数的最佳算法
- 城市环境中特征检测的最佳算法- OpenCV
- Rational函数级数展开的最佳算法
- 检查矢量是否排序的最佳算法