为什么我会出现分割错误?
int countLeaves(Node* root)
{
if (root = NULL) {
return 0;
}
int left = countLeaves(root->left);
int right = countLeaves(root->right);
return 1 + left + right;
}
语句中的表达式root=null
if(root=NULL) { return 0; }
将root
设置为null
,并计算为null
(分配的值)。
null
被视为false,因此返回0;
不执行,并且执行在下一条语句之前。
下一个语句是
int left = countLeaves(root->left);
这里,root
被设置为null
,被取消引用,这将导致分段错误。
要比较root和null,请使用if(root==null)