【发布时间】:2015-02-11 20:24:04
【问题描述】:
以下代码是将节点插入树中正确位置的函数。我不明白的是父节点实际代表什么。当它说root -> left -> parent = root -> left时,它是什么意思?这不是将root的左父母设置为它自己吗?
不应该是root -> left -> parent = root,因为我们希望root的左孩子的父母是root而不是左孩子本身吗?能否请您为我澄清一下父节点,谢谢。
Node * insert(Node *root, int item) {
if (root == NULL)
return newNode(item);
if (item <= root -> info)
if (root -> left == NULL) {
root -> left = newNode(item);
root -> left -> parent = root -> left; //**line of interest**
}
else
insert(root -> left, item);
else
if (root -> right == NULL) {
root -> right = newNode(item);
root -> right -> parent = root -> right;
}
else
insert(root -> right, item);
return root;
}
【问题讨论】:
-
这段代码工作正常吗?您的假设似乎是正确的:看起来像 root->left->parent = root;应该是命令。
-
@FernandoAires
root->left->parent不是root本身吗? -
这正是我写的...
-
@FernandoAires 该命令有原因吗?上面写着
root = root... -
不是,就是把root的左指针指向的节点,把它的父指针设置为root的地址。
标签: c parent nodes binary-search-tree