如何在树形结构中从Child移动到Parent?

时间:2015-03-14 01:42:35

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

struct node
{
    int data;
    node *child;
    node *sibling
};

我希望有一个从子节点移动到父节点的循环。如果树的根有5个孩子,那么从最后一个孩子到根。意味着循环应该以相反的方式移动。

事实上,如果我有一系列的孩子,这可能很容易,但如果我只有一个孩子的父母关系怎么办,那么每个孩子都有父母,所以我有可能从孩子到父母直到我扎根。

1 个答案:

答案 0 :(得分:2)

您需要父指针在循环中直接从子节点移动到父节点。 我觉得这很有效。

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

在根节点上将parent设置为null,并在leaf(final)节点上将childArray指针设置为null。

如果要在树中移动,请使用节点*。

e.g。

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

如果你从根节点开始并且只是递归以便到达父节点,你可以避免使用父指针。