我有这种代码
two->height = max(two->right->height, two->left->height);
右两个或两个 ->左之一可以是指向null的指针,因此程序将出现故障。我正在寻找,如果两个 ->左为null,它将被转换为零,因此两个 ->右图将自动true。
有什么技巧可以克服这个问题吗?
这也可以工作:
two->height = max(
( two->right != nullptr ? two->right->height : 0 ),
( two->left != nullptr ? two->left->height : 0 )
);
您首先要在左右指针上执行检查,看看它们是否为空。沿着:
的线if(two->right == NULL) {
...
}
else if(two->left == NULL) {
...
}
else {
two->height = max(two->right->height, two->left->height);
}
有很多方法可以处理无效的指针。我只是为一个例子选择了一个简单的。