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

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

题目描述:
给你一棵 完全二叉树的根节点 root ,求出该树的节点个数。

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

如果存在则返回 true,不存在返回 false。

考察重点:完全二叉树定义

方法概括:递归遍历左右子树的深度,左右子树深度一致,说明以当前节点为根的左子树一定是完全二叉树;左右子树深度不一致,说明以当前节点为根的右子树一定是完全二叉树

func getDepth(root *d.TreeNode) int { //计算当前结点的最大深度。由于是完全二叉树,所以最大深度等于最大左子树深度res := 0for root != nil {res++root = root.Left}return res
}func CountNodes(root *d.TreeNode) int {if root == nil {return 0}if root.Left == nil && root.Right == nil {return 1}left := getDepth(root.Left) //得到左右子树深度right := getDepth(root.Right)/**左右子树深度一致,说明以root=1为根的左子树一定是完全二叉树,右子树不一定。所以总结点数=完全二叉左子树 + 根节点 + (右子树)1          12	  3      2   32 2 3      2 2 3 3左右子树深度不一致,说明以root=1为根的右子树一定是完全二叉树,左子树一定不是。所以总结点数=完全二叉右子树 + 根节点 + (左子树)12	   32   2  3   32 2*/if left == right { //如果深度一致,向右子树继续遍历,同时加上完全二叉的左子树与根节点return CountNodes(root.Right) + (1<<left - 1) + 1} else { //如果深度不一致,向左子树继续遍历,同时加上完全二叉的右子树与根节点return CountNodes(root.Left) + (1<<right - 1) + 1}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程珠玑读书笔记之磁盘文件排序

输入&#xff1a; 所输入的是一个文件&#xff0c;至多包含n个正整数&#xff0c;每个正整数都要小于n&#xff0c;这是 n 10^7。如果输入时某个整数出现了两次&#xff0c;就会产生一个致命的错误。这些整数与其他任何数据都不关联。 输出&#xff1a; 以增序形式输出的经过排…

辨别文件的真实类型

2019独角兽企业重金招聘Python工程师标准>>> 参考博客http://blog.csdn.net/shixing_11/article/details/5708145 每个文件类型都对应着一个编码头部 下面这些是已知的文件头部[自定义的枚举类型] package org.masque.file; /*** * Description:文件对应的文件头,资…

ng build --prod --aot打包Angluar4项目报javaScript heap out of memory,内存溢出

这里 Allocation failed - JavaScript heap out of memory JavaScript堆内存不足&#xff0c;我们都知道 Node 是基于V8引擎&#xff0c;在一般的后端开发语言中&#xff0c;在基本的内存使用上没有什么限制&#xff0c;但是我去查阅了相关的资料才发现&#xff0c;在 Node 中通…

GARFIELD@12-02-2004

your BELLY is more ready to be convinced than your BRAIN 转载于:https://www.cnblogs.com/rexhost/archive/2004/12/02/72000.html

LeetCode—223. 矩形面积

223. 矩形面积 题目描述&#xff1a; 给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形&#xff0c;请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示&#xff1a; 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2)…

Spring Android 1.0.0.M3 发布

Spring Android 项目今天发布了第三个里程碑版本。 Spring Android 是一个在 Android 环境下使用 Spring 框架的项目&#xff0c;M3 版本主要是为 Android 应用扩展了对 Spring Social 的支持&#xff0c;包括&#xff1a; 通过全新的 Spring Android Auth 模块支持 Spring Soc…

几种开源工作流引擎的简单比较(转)

摘要&#xff1a;目前开源工作流引擎用的最多的是jbpm &#xff0c; 各种特性都不错&#xff0c; 文档也比较多&#xff0c; 下面只简单列举一下目前开源工作流引擎用的最多的是jbpm &#xff0c; 各种特性都不错&#xff0c; 文档也比较多&#xff0c; 下面只简单列举一下 其他…

LeetCode—224. 基本计算器(困难)

224. 基本计算器&#xff08;困难&#xff09; 题目描述&#xff1a; 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval()。 考察重点&#xff1a;使用go建立…

LBS业务资料随记

技术规范&#xff1a;设备技术要求&#xff0c;SP Access接口规范&#xff0c;GIS结构规范、L1接口规范、地图标准规范、终端规范 一个小型的ArcIMS网站 http://www.geo-spatial.net/csk/Downloads/default.aspx 基于位置的业务 。。随着用户移动终端设备的普及&#xff0c;简…

shell 和 || 的短路使用

shell && 和 || 的短路使用 && 和 || 在 shell 中分别表示 and 和  or&#xff0c;和其它语言类似&#xff0c;这两个操作有短路效应。也就是说&#xff0c;当判断式已经确定时&#xff0c;不再继续处理后续表达式。 && 在失败时中断&#xff0c; || …

XiaoKL学Python(C)__future__

__future__ in Python 1. from __future__ import xxxx 这是为了在低版本的python中使用可能在某个高版本python中成为语言标准的特性&#xff0c;从而 在将代码由低版本迁移到高版本的过程中&#xff0c;减少需要做的工作。 这种语句被称为 future_statement 2. future_state…

LeetCode—227. 基本计算器 II

227. 基本计算器 II 题目描述&#xff1a; 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意&#xff1a;不允许使用任何将…

GARFIELD@01-31-2005

savage sandwich 转载于:https://www.cnblogs.com/rexhost/archive/2005/01/31/99836.html

js 和 query 获取页面和滚动条的高度

//页面位置及窗口大小 function GetPageSize() {var scrW, scrH; if(window.innerHeight && window.scrollMaxY) { // Mozilla scrW window.innerWidth window.scrollMaxX; scrH window.innerHeight window.scrollMaxY; } else if(document.body.scrollHe…

【ABAP系列】SAP ABAP模块-任意report作为附件以邮件形式发送

公众号&#xff1a;SAP Technical本文作者&#xff1a;matinal原文出处&#xff1a;http://www.cnblogs.com/SAPmatinal/ 原文链接&#xff1a;【ABAP系列】SAP ABAP模块-任意report作为附件以邮件形式发送前言部分 大家可以关注我的公众号&#xff0c;公众号里的排版更好&…

[Mac]一些命令技巧

Git相关 mac下git默认不区分大小写&#xff0c;通过下面脚本可以改变 #!/bin/bash# 让git区分大小写 cd path-of-project git config core.ignorecase false git不会将空文件夹添加到版本控制中&#xff0c;下面脚本可以让空文件夹加到git # 将所有空文件夹添加到git cd path-o…

GARFIELD@02-24-2005

a cat on a ball 转载于:https://www.cnblogs.com/rexhost/archive/2005/02/25/109153.html

LeetCode—229. 求众数 II

229. 求众数 II 题目描述&#xff1a; 给定一个大小为 n 的整数数组&#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 考察重点&#xff1a;设超过 ⌊ n/3 ⌋ 次的元素有a个&#xff0c;则一定有 ⌊ n/3 ⌋ * a < n。即这种元素至多存在2个。 先用摩尔投票法求出最…

c2c网站源码

c2c网站源码是一套由网畅™(68ws.com)基于PHPMySQL技术的Web电子商务程序。c2c网站源码的主要功能有&#xff1a;采用了缓存更新处理&#xff0c;积木式查询显示&#xff0c;后台HTML模板管理&#xff0c;c2c网站源码首页商品和店铺的自助推荐功能&#xff0c;支持拍卖模式&…

网站总结 和 相关控件 总结

2019独角兽企业重金招聘Python工程师标准>>> 学习篇 https://github.com/Aufree/trip-to-iOS 开源库 http://github.ibireme.com/github/list/ios/ 项目管理和工具 测试&#xff1a;TestFlight 依赖管理&#xff1a;CocoaPods 自动生成推送证书&#xff1a;Gen…