【剑指offer】面试题55 - II:平衡二叉树(Java)
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
return helper(root)!=-1;
}
public int helper(TreeNode root)
{
if(root == null) return 0;
int left = helper(root.left);
if(left == -1) return -1; //左子树不平衡直接返回-1
int right = helper(root.right);
if(right == -1) return -1; //右子树不平衡直接返回-1
return Math.abs(left - right) > 1 ? -1 : 1 + Math.max(left, right);
}
}
【剑指offer】面试题55 - II:平衡二叉树(Java)相关推荐
- 剑指offer面试题55 - II. 平衡二叉树(后序遍历)(剪枝)
题目描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树.如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树. 思路 详见链接 代码 class Solution:def ...
- 剑指offer——面试题55:字符流中第一个不重复的字符
剑指offer--面试题55:字符流中第一个不重复的字符 Solution1: 当年第一次做这个题的做法 对此题最大的感想是: 1)区分deque(双端队列)和queue(队列): 2)要熟悉queu ...
- 剑指offer——面试题39-2:平衡二叉树
剑指offer--面试题39-2:平衡二叉树 20180906整理 Solution1: 书上的思路,利用后序遍历,每个结点只遍历一次~ class Solution { public:bool Is ...
- 剑指offer | 面试题53 - II. 0~n-1中缺失的数字
转载本文章请标明作者和出处 本文出自<Darwin的程序空间> 本文题目和部分解题思路来源自<剑指offer>第二版 开始行动,你已经成功一半了,献给正在奋斗的我们 题目 一个 ...
- [剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]
[问题描述][中等] [解答思路] 1. 暴力 复杂度分析 class MaxQueue {Queue<Integer> queue = new LinkedList();int maxV ...
- 剑指Offer - 面试题59 - II. 队列的最大值(deque模拟单调栈)
1. 题目 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的时间复杂度都是O(1). 若队列为空,pop_f ...
- 剑指Offer - 面试题58 - II. 左旋转字符串
1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转 ...
- 剑指Offer - 面试题53 - II. 0~n-1中缺失的数字(二分、位运算)
文章目录 1. 题目 2. 解题 2.1 充分利用题目信息 2.2 位运算 2.3 二分查找 1. 题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范 ...
- 剑指Offer - 面试题57 - II. 和为s的连续正数序列(滑动窗口)
1. 题目 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列. 示例 1: 输入:targe ...
- 剑指offer 面试题58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...
最新文章
- Linux下的Memcache安装(含libevent的安装)
- 33:把数组排成最小的数
- iPhone开发环境搭建For PC
- 按下企业自播“快车键”
- Android反编工具的使用-Android Killer
- make check 时出现:Error importing caffe
- Android之如何使用junit
- 微抖动,繁忙的等待和绑定CPU
- ActiveMQ:了解内存使用情况
- mysql originator_MySQL数据库事件调度(Event)
- oracle 感叹号,Oracle错误案例:ORA-00922
- Redhat 设置cntlm代理步骤
- 虚拟服务器ftp上传权限设置,13. 为 FTP虚拟用户设置“不同文件目录”和“访问权限”...
- 使用Matplotlib绘制3D图形
- 棋牌游戏开发新转机 出海最佳国家有哪些
- python调整图片大小reshape_将不同大小的图像调整为28x28图像并将其转换为一个csvfi...
- Mornsun B0505S-1WR3 隔离模块DC/DC
- java基础入门篇(1)
- 数仓工具—Hive源码之SQL解析AntlrWorks的使用(10)
- RocketMQ原理及解析
热门文章
- LeetCode 1268. 搜索推荐系统(Trie树/multiset)
- LeetCode 859. 亲密字符串
- 程序员面试金典 - 面试题 17.05. 字母与数字(哈希map+思维转换)
- LeetCode 797. 所有可能的路径(DFS)
- POJ 1804 逆序数 解题(归并排序)
- unity python_Unity引擎内嵌python
- php怎样加速,php 提速
- 系统总结vue组件间通信、数据传递(父子组件,同级组件)
- PowerBI 报表服务器刷新失败自动重刷并邮件通知
- java栅格法全局路径规划,基于A*的全局路径规划算法(1)