当前位置:首页 > 编程笔记 > 正文
已解决

刷题笔记24——完全二叉树的节点个数

来自网友在路上 159859提问 提问时间:2023-09-22 22:55:48阅读次数: 59

最佳答案 问答题库598位专家为你答疑解惑

有些事情是不能告诉别人的,有些事情是不必告诉别人的,有些事情是根本没有办法告诉别人的,而且有些事情是,即使告诉了别人,你也会马上后悔的。——罗曼罗兰

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

  • java的幂运算要 (int) Math.pow(2,l+1)-1
  • 计算满二叉树的节点数量公式:2 ^ height -1
  • 一棵完全二叉树的两棵子树,至少有一棵是满二叉树
  • 计算时间复杂度时,本题比较巧妙的就是,因为完全二叉树的子树也是完全二叉树,所以每次分叉只需要走其中一支即可,即O(logN),而每次算深度即while循环这里需要O(logN),因此时间复杂度为 O(logN*logN)
    在这里插入图片描述
class Solution {public int countNodes(TreeNode root) {if(root==null) return 0;int l = 0;int r = 0;TreeNode lt = root;while(lt.left!=null){lt = lt.left;l++;}TreeNode rt = root;while(rt.right!=null){rt = rt.right;r++;}if(l==r) return (int)Math.pow(2,l+1)-1;return 1 + countNodes(root.left) + countNodes(root.right);}
}

下一章开始刷图算法

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"刷题笔记24——完全二叉树的节点个数":http://eshow365.cn/6-11714-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!