【Golang】LeetCode-剑指Offer-面试题55 - II -平衡二叉树
2020-03-05 01:26
966 查看
题目
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。
如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7 返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1 / \ 2 2 / \ 3 3 / \ 4 4 返回 false 。
限制:
1 <= 树的结点个数 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof
解题思路
1、什么是平衡二叉树
- 如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
2、求二叉树的深度
- 递归求二叉树的深度,具体解法和思路解释请看 面试题55 - I - 二叉树的深度
3、通过递归计算每一个节点左右子树的深度,
- 利用 && 的短路特性判断,相差都不超过1则为平衡二叉树,否则该二叉树不是平衡二叉树
代码
–执行时间:4 ms --消耗内存:5.7 MB
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func isBalanced(root *TreeNode) bool { if root==nil{ return true } //获取节点的左右子树的深度(首次为根节点) Left,Right:=maxDepth(root.Left),maxDepth(root.Right) //相差不超过1 if math.Abs(float64(Left)-float64(Right))<=1{ //递归计算其他节点的左右子树的深度是否超过1 return isBalanced(root.Left) && isBalanced(root.Right) } //超过1,不是平衡二叉树 return false } //递归获取二叉树的深度 func maxDepth(root *TreeNode) int { if root==nil{ return 0 } Left:=maxDepth(root.Left) Right:=maxDepth(root.Right) return max(Left,Right)+1 } func max(a,b int)int{ if a>b{ return a } return b }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【Golang】LeetCode-剑指Offer-面试题57 - II - 和为s的连续正数序列【两种解法】
- 【Golang】LeetCode-剑指Offer-面试题48-最长不含重复字符的子字符串
- 【Golang】LeetCode-剑指Offer-面试题07-重建二叉树
- 【Golang】LeetCode-剑指Offer-面试题46-把数字翻译成字符串
- 【Java】LeetCode-剑指Offer-面试题68 - II-二叉树的最近公共祖先
- 【剑指offer】面试题55(2):平衡二叉树
- 【Golang】LeetCode-剑指Offer-面试题38-字符串的排列
- 【Golang】LeetCode-剑指Offer-面试题65-不用加减乘除做加法【三种解法】
- 剑指Offer面试题55-2:平衡二叉树
- 【Golang】LeetCode-剑指Offer-面试题62-圆圈中最后剩下的数字【约瑟夫环】
- 【Golang】LeetCode-剑指Offer-面试题61-扑克牌中的顺子【两种解法】
- 【Golang】LeetCode-剑指Offer-面试题34-二叉树中和为某一值的路径
- 【Golang】LeetCode-剑指Offer-面试题60-n个骰子的点数
- 【Golang】LeetCode-剑指Offer-面试题33-二叉搜索树的后序遍历序列【两种解法】
- 【Golang】LeetCode-剑指Offer-面试题59 - I - 滑动窗口的最大值【两种写法】
- 【Golang】LeetCode-剑指Offer-面试题31-栈的压入、弹出序列
- 【Golang】LeetCode-剑指Offer-面试题58 - I - 翻转单词顺序
- 【Golang】LeetCode-剑指Offer-面试题26-树的子结构
- 【Golang】LeetCode-剑指Offer-面试题32 - III-从上到下打印二叉树 III
- 【Golang】LeetCode-剑指Offer-面试题57-和为s的两个数字