我有这种代码
two->height = max(two->right->height, two->left->height);
两个> right或two->中的一个可以是指向null的指针,因此程序将会出错。我正在寻找,如果两个>左边是null,它将被转换为零,所以两个>右边将自动为真。
有什么技巧可以解决这个问题吗?
答案 0 :(得分:1)
您首先要对左右指针执行检查,看看它们是否为空。有点像:
if(two->right == NULL) {
...
}
else if(two->left == NULL) {
...
}
else {
two->height = max(two->right->height, two->left->height);
}
有许多方法可以处理指针为NULL。我只选了一个简单的例子。
答案 1 :(得分:1)
这也可以起作用:
two->height = max(
( two->right != nullptr ? two->right->height : 0 ),
( two->left != nullptr ? two->left->height : 0 )
);