我正在remove用C++ 实现二进制搜索树的方法.在其中一个案例中,我确信树node只有一个孩子:node->left或者node->right我需要修改它的父母指向那个孩子.正如我的一个前面提到的node->left和node->right是NULL.这是一个片段:
} else { // One children
if (node->parent->left == node) {
node->parent->left = node->left | node->right;
node->parent->left->parent = node->parent;
} else {
node->parent->right = node->left | node->right;
node->parent->right->parent = node->parent;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,编译器返回错误.我知道它可能不是优雅的但我只是好奇如何去做.
C++或C不支持对指针进行位操作.您可以将它们转换为整数or,然后转换回来,但这只是为了没有特别的收益而烦恼.
改为使用三元表达式:
node->parent->left = node->left ? node->left : node->right;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |