【问题标题】:How to move from Child to Parent in a tree structure?如何在树结构中从子级移动到父级?
【发布时间】:2015-03-14 01:42:34
【问题描述】:
struct node
{
    int data;
    node *child;
    node *sibling
};

我想要一个从孩子到父母的循环。如果树的根有 5 个孩子,则从最后一个孩子开始到根。意味着循环应该以相反的方式移动。

事实上,如果我有一个孩子数组可能会很容易,但是如果我只有一个孩子父母关系呢,在这种情况下,每个孩子都有一个父母,那么我有可能从孩子转到父母吗直到我获得root权限。

【问题讨论】:

  • 如果你想从一个孩子转到一个父母,你需要一个指向你回到父母的节点的指针。否则,只能从根到节点,不能返回。
  • 一般来说,这样的树节点应该有父、子、下一个、上一个。树本身应该总是知道根。你也标记了visual-c++,也许你正在寻找SendMessage TVM_GETNEXTITEM TVGN_ROOT
  • 我明白了,谢谢。

标签: c++ c visual-c++ tree parent-child


【解决方案1】:

您需要一个父指针才能在循环中直接从子节点移动到父节点。 我觉得这行得通。

struct node{
    int value;
    node * parent;
    node ** childArray;
    int NumberOfChildren;
}

您在根节点上将 parent 设置为 null,并在叶(最终)节点上将 childArray 指针设置为 null。

当你想在树中移动时,你使用一个节点*。

例如

node * PCurrentNode = &MyNode;
PCurrentNode = MyNode->Parent;//Move Up
PCurrentNode = MyNode->ChildNodes[5]//Move to the 5th child node

如果您从根节点开始并向下递归,则可以避免使用父指针,因为您只需向上递归即可到达父节点。

【讨论】:

  • 所以,我必须按照您的建议创建一个子数组,这与我的想法相同。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多