二叉树表示的有序树中节点的右子节点计数
Counting right children of a node in binary tree representation of ordered tree
我需要帮助解决这个问题。树例子:
A
/
B-C-D
/
E-F-G
我有一棵表示有序树的二叉树,我必须计算每个节点的子节点数量,并将该数字放在相应的节点上。
A有三个子结点(B,C,D),D有三个子结点(E,F,G)。B,C,E,F,G没有子结点
每个节点在物理(二进制)表示中只能有两个子节点。如果一个节点有左子节点,那么从这个节点开始的每个右子节点都被认为是一个子节点。在我的例子中,A的左子结点是B, B有一个右子结点C, C有一个右子结点D,所以B, C和D是A在这个任务中的子结点。
程序结束时节点的数据应为A(3),B(0),C(0),D(3),E(0),F(0),G(0)。
您所描述的似乎是一个以左子右兄弟模式表示的任意树。每个节点都有一个指针指向最左边的子节点和最右边的兄弟节点。
查找给定节点有多少个子节点应该不会太难。只要取最左边的子元素然后数一数你可以迭代多少次到它右边的兄弟元素。在伪代码中,它看起来像这样:
def Node {
Node* left_child
Node* right_sibling
}
numChildren(Node n) {
num = 0
next = n.left_child
while (next exists)
num = num + 1
next = next.right_sibling
return num
}
相关文章:
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 删除 XML 文件中的子节点C++
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 语言分析的二叉树实现 - 子节点:不起作用
- Node中的子节点列表在C++中的BFS遍历过程中丢失
- 根据 Pugixml 中的子值删除节点
- C++ 链表合并排序的实现在连接 1 个以上节点的子列表时失败
- C ,二进制树的高度,而不是检查我的子树是否为空,而是在检查我的子树是否是叶子节点.抛出分割故障
- c++ 无法从 XML 获取所有子节点
- 使用访问者设计模式在N- ARY树中重复访问子节点值
- TinyXML2 从节点和所有子节点获取文本
- C++ 访客模式与子类节点上的访客失去"is a"关系
- 遍历仅引用每个节点的子节点的树
- 从父节点中删除子节点 - PugiXML
- 根据其子节点的余额计算 AVL 树节点余额
- 有没有一种方便的方法可以从属性树中删除节点,同时保留其子节点
- 访问BST子节点时出现分段故障.为什么?
- 避免在节点中添加重复的子级,使用 Kasper Peeters 的 Tree.hh 库
- 结合二元算子AST节点的Boost Spirit Qi语法
- 对象中的对象从c++返回到节点(节点插件)