欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > leetcode 二叉树 空指针报错

leetcode 二叉树 空指针报错

2025/12/31 15:26:11 来源:https://blog.csdn.net/m0_73924943/article/details/140672508  浏览:    关键词:leetcode 二叉树 空指针报错

 222. 完全二叉树的节点个数

通过的代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int geNum(TreeNode* cur){//确定递归函数参数和返回值if(cur==nullptr) return 0;//确定终止条件int leftNum=0,rightNum=0;TreeNode* left=cur->left;TreeNode* right=cur->right;while(left){leftNum++;left=left->left;}while(right){rightNum++;right=right->right;}if(leftNum==rightNum) return (2<<leftNum)-1;//单层递归逻辑int leftTreeNum=geNum(cur->left);int rightTreeNum=geNum(cur->right);int midTreeNum=leftTreeNum+rightTreeNum+1;return midTreeNum;}int countNodes(TreeNode* root) {return geNum(root);}
};

未通过的代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int geNum(TreeNode* cur){//确定递归函数参数和返回值//if(cur==nullptr) return 0;//确定终止条件int leftNum=0,rightNum=0;TreeNode* left=cur->left;TreeNode* right=cur->right;while(left){leftNum++;left=left->left;}while(right){rightNum++;right=right->right;}if(leftNum==rightNum) return (2<<leftNum)-1;//单层递归逻辑int leftTreeNum=geNum(cur->left);int rightTreeNum=geNum(cur->right);int midTreeNum=leftTreeNum+rightTreeNum+1;return midTreeNum;}int countNodes(TreeNode* root) {if(root==nullptr) return 0;return geNum(root);}
};

问题:

在countNodes函数中添加的代码:

if(root==nullptr) return 0;

好像没有用似的,必须在递归函数中添加这行代码才不会报错。

这是为什么??

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词