标签:temp int leftLength sum 力扣 算法 二叉树 day12 root
文章目录
力扣算法学习day12-3
222-完全二叉树的结点个数
题目-略
代码实现-方法二
// 利用完全二叉树的性质,有一边一定是满二叉树,另一边也能分割为小的满二叉树.
// 速度有明显提升 3ms --> 0ms
public int countNodes(TreeNode root) {
if(root == null){
return 0;
}
TreeNode temp = root;
int leftLength = 0;
int rightLength = 0;
// 求左右一直到底的长度
while(temp != null){
temp = temp.left;
leftLength++;
}
temp = root;
while(temp != null){
temp = temp.right;
rightLength++;
}
if(leftLength == rightLength){
int sum = 1;
for(int i = 0;i < leftLength;i++){
sum = sum * 2;
}
sum = sum - 1;
return sum;
}
// 不是满二叉树的情况,向左右子树分割继续判断是否为满二叉树
return countNodes(root.left) + countNodes(root.right) + 1;
}
标签:temp,int,leftLength,sum,力扣,算法,二叉树,day12,root 来源: https://blog.csdn.net/weixin_45609749/article/details/122766917
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。