Leetcode040--是否是平衡二叉树
来源:互联网 发布:招聘程序员 编辑:程序博客网 时间:2024/06/11 02:32
一、原题
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
一、中文
给定一棵平衡二叉树,判断它是否是高度平衡的。一棵高度平衡的二叉树是左右子树的高度相差不超过1,对其左右子树也是如此。
三、举例
前序:根-左-右
中序:左-根-右
后序:左-右-根
四、思路
采用的是两次递归的方式,第一次递归使用的是用来判断平衡二叉树,第二次递归是用来获取每个树的深度的,通过这两次的递归就可以实现一个平衡二叉树了的判断了。
五、程序
package code;class TreeNode6{int val;TreeNode6 left;TreeNode6 right;TreeNode6(int x){val = x;}}public class LeetCode57{public static void main(String args[]){TreeNode6 n1 = new TreeNode6(1);TreeNode6 n2 = new TreeNode6(2);TreeNode6 n3 = new TreeNode6(3);TreeNode6 n4 = new TreeNode6(3);TreeNode6 n5 = new TreeNode6(4);TreeNode6 n6 = new TreeNode6(5);TreeNode6 n7 = new TreeNode6(6);n1.left = n2;n2.right = n3;n3.left = n4;n1.right = n5;n4.left = n7;//n3.right = n6;System.out.println("是否是平衡二叉树:"+isBalanced(n1));}public static Boolean isBalanced(TreeNode6 root){if(root == null){return true;}int leftDeep = getDeep(root.left);int rightDeep = getDeep(root.right);if((leftDeep - rightDeep > 1) || (leftDeep - rightDeep < -1)){return false;}else{return isBalanced(root.left) && isBalanced(root.right);}}public static int getDeep(TreeNode6 root){if(root == null){return 0;}if(root.left == null && root.right == null){return 1;} else { int left = getDeep(root.left); int right = getDeep(root.right); return 1 + (left > right ? left : right);}}}
-------------------------------------------------output-------------------------------------------------
是否是平衡二叉树:false
1 0
- Leetcode040--是否是平衡二叉树
- 判断二叉树是否是平衡树
- 判断二叉树是否是平衡树
- 判断二叉树是否是平衡树
- 判断一颗树是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断一棵树是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断二叉数是否是平衡树
- 判断是否是平衡二叉树
- Leetcode110 判断是否是平衡二叉树
- 判断一棵树是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断是否是平衡二叉树
- 判断一棵树是否是平衡二叉树
- 判断一个二叉树是否是平衡二叉树
- 【二叉树8】判断一颗树是否是平衡二叉树
- Http(超文本传输协议)那点儿破事
- VS2013配置Winpcap开发环境
- 生成排列
- 华为oj初级 统计大写字母个数
- mysql存emoji表情报错处理
- Leetcode040--是否是平衡二叉树
- 算法之路(一)
- 测试各种类型所占内存的大小
- android 学习中实用(一)
- (M)SIM卡开机流程分析之SubscriptionController类分析
- 进程调度方式
- 在[Linux]下 PHP程序员如何玩转Linux系列-lnmp环境的搭建
- JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
- 在测试中mock的作用