struct node
{
int data;
node *child;
node *sibling
};
我希望有一个从子节点移动到父节点的循环。如果树的根有5个孩子,那么从最后一个孩子到根。意味着循环应该以相反的方式移动。
事实上,如果我有一系列的孩子,这可能很容易,但如果我只有一个孩子的父母关系怎么办,那么每个孩子都有父母,所以我有可能从孩子到父母直到我扎根。
答案 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
如果你从根节点开始并且只是递归以便到达父节点,你可以避免使用父指针。