958. 二叉树的完全性检验 golang

958. 二叉树的完全性检验

给定一个二叉树,确定它是否是一个完全二叉树。

百度百科中对完全二叉树的定义如下:

若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~ 2h 个节点。)

示例 1:
在这里插入图片描述

输入:[1,2,3,4,5,6]
输出:true
解释:最后一层前的每一层都是满的(即,结点值为 {1} 和 {2,3} 的两层),且最后一层中的所有结点({4,5,6})都尽可能地向左。
示例 2:
在这里插入图片描述

输入:[1,2,3,4,5,null,7]
输出:false
解释:值为 7 的结点没有尽可能靠向左侧。

提示:

树中将会有 1 到 100 个结点。

解决


var ids map[int]boolfunc isCompleteTree(root *TreeNode) bool {ids = make(map[int]bool)dfs(root, 0)for i:=0; i<len(ids); i++ {if !ids[i] {return false}   }   return true
}func dfs(node *TreeNode, id int) {if node == nil {return }   ids[id] = trueid << 1 dfs(node.Left, id + 1)dfs(node.Right, id + 2)
}

Code

var res [][]int
// 入口
func isCompleteTree(root *TreeNode) bool {res = [][]int{}dfs(root, 0)//判断前几个结点是否饱和for i:=0; i<=len(res)-2; i++ {m := pow(2, i)if len(res[i]) != m {return false}}//如果出现了空节点,那么后面如果还有数字,那么就肯定不是满二叉树m := 0for _, v := range res[len(res)-2] {if v == 999 {m = 1}if m == 1 && v != 999 {return false}}return true
}// 层序遍历代码
func dfs(root *TreeNode, level int) {if len(res) == level {res = append(res, []int{})}if root != nil {res[level] = append(res[level], root.Val)dfs(root.Left, level+1)dfs(root.Right, level+1)} else {res[level] = append(res[level], 999)}
}
// 求整数幂函数
func pow(a, b int) int {if b == 0 {return 1}for b != 0 {a *= 2b--}return a / 2
}

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

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

相关文章

42. 接雨水 golang

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&#xff0c;可以接 6 个单位的雨水&#xff08;蓝色部分表…

HDU中一些DP的题目分类

DP是难点&#xff0c;供自已以后系统学习。 1.Robberies 连接 &#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状…

11. 盛最多水的容器 golang

11. 盛最多水的容器 &#xff08;一道比较特殊的题&#xff09; 之所以说特殊是因为这个题用动态规划反而比暴力破解法还复杂。 这种容器的题&#xff0c;就是前后指针方向。尽量别考虑别的思路。 11. 盛最多水的容器 给你 n 个非负整数 a1&#xff0c;a2&#xff0c;…&#…

LeetCode 303,560,1248 (前缀求和 )

303. 区域和检索 - 数组不可变 给定一个整数数组 nums&#xff0c;求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和&#xff0c;包含 i, j 两点。 示例&#xff1a; 给定 nums [-2, 0, 3, -5, 2, -1]&#xff0c;求和函数为 sumRange() sumRange(0, 2) -> 1 sumRange…

分布式是写出来的(二)

从单机存储进化为接口和存储的分离 概述 接口服务层对外提供REST服务&#xff0c;数据服务层提供数据存储功能。两者之间通过消息队列进行通信&#xff0c;数据服务层的所有数据服务注册dataServer Exchange&#xff0c; 以便client给接口服务层发消息后&#xff0c;接口服务…

分布式是写出来的(五)

数据冗余策略 RS(Reed Solomon Coding)纠删码 在存储系统中&#xff0c;需要采用数据冗余技术来保证数据的可靠性&#xff0c;相比使用多副本复制机外&#xff0c;使用纠删码能够以更小的数据冗余度获得更高的数据可靠性。 RS纠删码将原文件分成n个数据块&#xff0c;同时为这…

java在acm中的一些应用

这两天遇到了一些关于大数据处理的题目&#xff0c;发现Java对于这方面的优势很大。最重要的是代码量小了。于是针对这两天对Java的摸索&#xff0c;写一篇日志。记录一下针对ACM来说常用的Java方面的东西。1、输入首先要想输入需要先包括&#xff1a;[java] view plaincopyimp…

Codeforces 55D Beautiful Number (数位统计)

把数位dp写成记忆化搜索的形式&#xff0c;方法很赞&#xff0c;代码量少了很多。 下面为转载内容&#xff1a; a positive integer number is beautiful if and only if it is divisible by each of its nonzero digits. 问一个区间内[l,r]有多少个Beautiful数字 范围9*…

埃拉托斯特尼筛法 快速查找素数

埃拉托斯特尼筛法快速查找素数时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述现在给你一个正整数N&#xff0c;要你快速的找出在2.....N这些数里面所有的素数。输入给出一个正整数数N(N<2000000)但N为0时结束程序。测试数据不超过100组…

教主们:虽然这道题我不会,但Ac还是没问题的。

wywcgs&#xff1a;亦称Lord Wu&#xff0c;俗名吴垠&#xff0c;2009级厦门大学智能科学与技术学院研究生&#xff0c;本科就读于哈尔滨工业大学。因其深厚的算法功底与独到的思维方式&#xff0c;被尊为“吴教主”&#xff0c;至今声威犹存。2006年起参加ACM/ICPC竞赛&#x…

引用 Map 数据结构的排序问题

用过map吧&#xff1f;map提供一个很常用的功能&#xff0c;那就是提供key-value的存储和查找功能。例如&#xff0c;我要记录一个人名和相应的存储&#xff0c;而且随时增加&#xff0c;要快速查找和修改&#xff1a; 岳不群&#xff0d;华山派掌门人&#xff0c;人称君子剑 …

程序猿不能错过的十部电影

不同的行业领域中很多时候都分享着共同的思想和理念。比如&#xff0c;大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之酷&#xff0c;甚至反过来能帮助我们程序员更好的理解这些概念。下面就是小编最喜欢的10大电影&#xff0c;它们都在…

goland远程调试Docker

开发环境 goland windows10 Docker centos IP:123.57.43.91 操作原理及流程 goland通过tcp/8080(应该选取2375&#xff0c;登录阿里云开启这个端口&#xff0c;这里临时采用)端口与docker-host通信&#xff0c; 发送docker指令&#xff0c;然后让linux执行&#xff0c;通过d…

紫书的训练计划——一点点来,坚持到底!

先做 第10章3 数论的一点补充。然后趁热温习 10.1 和10.2 &#xff08;可能会有重的题目&#xff09; &#xff08;期望&#xff0c;概率的题目还要过段时间回来补坑&#xff09;然后 第7、8.1&#xff0c;8.2 章做暴力求解和高效算法&#xff08;可以适当的加快步伐&#…

go设计模式思维导图

go设计模式思维导图

【转载】最短路径之Dijkstra算法详细讲解

&#xff11; 最短路径算法 在日常生活中&#xff0c;我们如果需要常常往返A地区和B地区之间&#xff0c;我们最希望知道的可能是从A地区到B地区间的众多路径中&#xff0c;那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题&#xff0c; 旨在寻找图&#xf…

Intelij 添加php注释

没有methodParameters()) groovyScript("def result; def params\"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList(); for(i 0; i < params.size(); i) {result * param params[i] ((i < params.size() - 1) ? \\n:)}; return result…

为什么LeetCode过一段时间又不会了

怎么从这个迷宫的左上角走到右下角&#xff1f; 看起来好像很简单&#xff0c;花时间还是可以找得到答案。 看了答案之后可以很清楚&#xff0c;这是正解。 只有一个问题&#xff1a; 我怎么就没立刻想到&#xff1f; 当在看题解或者听别人讲授思路的时候&#xff0c;你就是…

148. 排序链表

148. 排序链表 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5] 示…

HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)

畅通工程续 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1874 Problem Description 某省自从实行了很多年的畅通工程计划后&#xff0c;终于修建了很多路。不过路多了也不好&#xff0c;每次要从一个城镇到另一个城镇时&#xff0c;都有许多种道路方案可以…