完全二叉树的节点个数

  • 题目链接
  • 描述
  • 示例
  • 初始代码模板
  • 代码

题目链接

https://leetcode-cn.com/problems/count-complete-tree-nodes/

描述

给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

示例

输入: 1/ \2   3/ \  /
4  5 6输出: 6

初始代码模板

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public int countNodes(TreeNode root) {}
}

代码

代码注释看不懂没关系,去看题解,有评论更好懂:
https://leetcode-cn.com/problems/count-complete-tree-nodes/solution/chang-gui-jie-fa-he-ji-bai-100de-javajie-fa-by-xia/

emmm,再说明一下,这些博客是每日刷题,会推荐一些个人认为不错的题解,但是一般不会自己写,毕竟自己绞尽脑汁的东西是比不上大佬们经过锤炼的题解的,写的不好不如不写,建议多看看那些优秀题解,这些博客就当个督促做题就行(虽然没人看~)

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public int countNodes(TreeNode root) {if (root == null) {return 0;}int leftLevel = countLevel(root.left);int rightLevel = countLevel(root.right);if (leftLevel == rightLevel) {//如果当前节点左子树的最大高度和右子树的最大高度相等,那么左子树一定是满二叉树,右子树还不确定return countNodes(root.right) + (1 << leftLevel);} else {//如果当前节点左子树的最大高度和右子树的最大高度不等,一定是右子树高度较低//但是右子树也是满二叉树,因为最下面一层的叶子节点没蔓延到右子树,左子树不确定return countNodes(root.left) + (1 << rightLevel);}}//当前节点的高度,从底向上算private int countLevel(TreeNode root) {int level = 0;//利用左子树计算高度while (root != null) {level++;root = root.left;}return level;}
}

leetcode 222.完全二叉树的节点个数 Java相关推荐

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

    222. 完全二叉树的节点个数 题目描述: 给你一棵 完全二叉树的根节点 root ,求出该树的节点个数. 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值 ...

  2. LeetCode 222. 完全二叉树的节点个数(二分查找)

    1. 题目 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干 ...

  3. leetcode 222. 完全二叉树的节点个数(dfs)

    给出一个完全二叉树,求出该树的节点个数.说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置.若最底层为 ...

  4. LeetCode 222. 完全二叉树的节点个数(递归)

    题目描述 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位 ...

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

    222. 完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集 ...

  6. leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)

    题目 https://leetcode.com/problems/count-complete-tree-nodes/ 题解 思路参考左程云<程序员代码面试指南> 顺便贴一下草稿 代码 c ...

  7. 【Leetcode | 47】 222. 完全二叉树的节点个数

    给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置.若最底 ...

  8. Leecode 222. 完全二叉树的节点个数——Leecode日常刷题系列

    题目链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/ 题解汇总:https://leetcode-cn.com/proble ...

  9. 二叉树11:完全二叉树的节点个数

    Leetcode 222.完全二叉树的节点个数 要求是 给出一个完全二叉树,求出该树的节点个数. 完全二叉树的节点数其实是可以在找到最后一层最右侧的元素之后直接使用公式计算的.这里我们需要先明确什么是 ...

最新文章

  1. JavaTPoint 编程语言中文教程【翻译完成】
  2. php apache 配置后不能正常显示html文件的解决方法
  3. 【实验报告】二 网络嗅探与欺骗
  4. 20210218:力扣第228周周赛(下)
  5. Python爬虫解析htm时lxml的HtmlElement对象获取和设置inner html方法
  6. Windows上Chrome被“毒霸网页“劫持启动页解决方式
  7. 面试备战笔记2019
  8. php被挂马,PHP网站被挂马防御战
  9. 小爱音箱显示服务器连接不上,小爱音箱无法连接WiFi解决方法
  10. 奇(异或)偶(同或)校验
  11. es6模块循环引用的问题
  12. acl 2020 Question Answering
  13. 第一章踏上python之旅_神界之唯我逍遥
  14. 新一代的无线通信技术(转)
  15. 基于“业务中台”构建的一些理解
  16. 服务器raid卡安装在什么位置,安装raid卡
  17. pr-pr与au联动
  18. 输出小数点后第n位数字
  19. TCP/IP协议族 总结
  20. IP核的使用之RAM(Vivado)

热门文章

  1. Jmeter接口测试实例
  2. ssh生成公钥、私钥
  3. 关于氚云PasS的介绍
  4. 向mysql数据库发送指令_常用的MySQL数据库命令大全
  5. 通信计算机方面面试题,通信与计算机类求职面试题--Lucent篇
  6. 2020FME博客大赛——基于FME的共享单车租赁站点布局、广告精准投放分析
  7. ROS 和 ROS2 架构和通信
  8. python十六进制转为二进制_Python从二进制字符串转换为十六进制
  9. 整型常量数据 下划线分隔符
  10. 读书百客:《襄邑道中》鉴赏