题目描述

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

思路

详见链接

代码

class TreeNode:def __init__(self,x):self.val = xself.left = Noneself.right = None
class Solution:def countNodes(self,root:TreeNode) -> int:if not root:return 0h_l , h_r = 0, 0curRoot = rootwhile curRoot.left:h_l += 1curRoot = curRoot.leftcurRoot = rootif curRoot.right:h_r += 1curRoot = curRoot.rightwhile curRoot.left:h_r += 1curRoot = curRoot.leftif h_l == h_r:sumNodes_l = 2**h_l - 1sumNodes_r = self.countNodes(root.right)if h_l == h_r + 1:sumNodes_l = self.countNodes(root.left)sumNodes_r = 2**h_r -1return sumNodes_l + sumNodes_r + 1

LeetCode 222. 完全二叉树的节点个数(递归)相关推荐

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

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

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

    完全二叉树的节点个数 题目链接 描述 示例 初始代码模板 代码 题目链接 https://leetcode-cn.com/problems/count-complete-tree-nodes/ 描述 ...

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

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

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

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

  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. 《部署IPv6网络(修订版)》一2.4 邻居发现协议
  2. 2-16 HDO1106
  3. Java实现 二叉搜索树算法(BST)
  4. TCP/IP学习——利用主机IP与子网掩码计算网络号
  5. 石墨烯区块链(1)系统架构
  6. 数据结构学习笔记(一):链表(linked list)
  7. 施工部署主要不包括_建筑工程施工方案及培训实例
  8. 0.1uf与47uf并联_UF是什么形式?
  9. arraylist扩容是创建新数组吗 java_Java 集合,你肯定也会被问到这些
  10. 一次Python性能调优经历
  11. 拓端tecdat|python图工具中基于随机块模型动态网络社团检测网络图
  12. 学习之路十四:客户端调用WCF服务的几种方法小议
  13. C#网络编程(Socket编程)
  14. Linux期末复习总结
  15. 关于Asterisk的传真以及ForIP的概念
  16. HTB-baby BoneChewerCon
  17. 玩转“Redis轻量级数据库”之入门(上)
  18. 输入月份查询对应的季节
  19. Reverse and Concatenate
  20. 职业建议:辞职时提前通知很重要

热门文章

  1. FirewallD常用命令及设置
  2. 【Computer Organization笔记11】多周期CPU
  3. mysql配合memcache部署_Docker多容器配合实现开发环境(nginx、php、memcached、mysql)...
  4. unity 获取预制体_Unity打包插件AssetsBundleBrowser的使用
  5. 最新pvz服务器补偿码,阴阳师:补偿来了!大量活动导致服务器崩溃,现已修复且下发补偿...
  6. centos 6.4 postfix mysql_CentOS 6.4下Postfix邮件服务安装和基本配置
  7. psd imageset转换工具
  8. 2021-06-25 WebStorm的设置代码tab宽度等
  9. SQL那些事儿(十三)--Oracle中varchar与varchar2区别
  10. 浅析 golang module