如何在树形结构中从 Child 移动到 Parent?
How to move from Child to Parent in a tree structure?
struct node
{
int data;
node *child;
node *sibling
};
我想要一个从 child 移动到 parent 的循环。如果一棵树的根有 5 children 那么从最后一个 child 开始到根。这意味着循环应该以相反的方式移动。
事实上,如果我有一个 children 的数组,这可能很容易,但是如果我只有一个 child parent 关系怎么办,在那种情况下,每个 child 有一个 parent,那么我是否有可能从 child 到 parents 直到我进入 root。
您需要一个父指针才能在循环中从子项直接移动到父项。
我发现这个有效。
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
如果您从根节点开始并向下递归,则可以避免使用父指针,因为您只需向上递归以到达父节点。
struct node
{
int data;
node *child;
node *sibling
};
我想要一个从 child 移动到 parent 的循环。如果一棵树的根有 5 children 那么从最后一个 child 开始到根。这意味着循环应该以相反的方式移动。
事实上,如果我有一个 children 的数组,这可能很容易,但是如果我只有一个 child parent 关系怎么办,在那种情况下,每个 child 有一个 parent,那么我是否有可能从 child 到 parents 直到我进入 root。
您需要一个父指针才能在循环中从子项直接移动到父项。 我发现这个有效。
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
如果您从根节点开始并向下递归,则可以避免使用父指针,因为您只需向上递归以到达父节点。