剑指Offer39:平衡二叉树(Java)
Posted 31楼下小黑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer39:平衡二叉树(Java)相关的知识,希望对你有一定的参考价值。
思路分析:
二叉树的题第一反应是应用递归遍历。
判断一棵平衡二叉树的依据是:1.结点的左右子树的深度是平衡二叉树,2.左子树的深度与右子树的深度的差不超过1 若所有的结点都符合这两条件则该树是一平衡二叉树。
利用“与”实现遇到错返回false,全部正确才返回true(之前一直不懂,终于清楚了)
boolean m=true;
if(a-b>1||a-b<-1){
m=false;
}
boolean l=IsBalanced_Solution (root.left);
boolean r=IsBalanced_Solution (root.right);
return l&&r&&m;
题目描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
Java代码:
//遇到错返回false,全部正确才返回true;
//二叉树的题第一反应是应用递归遍历。
import java.lang.Math;
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null){
return true;
}
int a=deepth(root.left);
int b=deepth(root.right);
boolean m=true;
if(a-b>1||a-b<-1){
m=false;
}
boolean l=IsBalanced_Solution (root.left);
boolean r=IsBalanced_Solution (root.right);
return l&&r&&m; //若其中一项结果是false最终结果就会是false 全部是true才会返回true.
}
public int deepth(TreeNode cur){ //求某一结点的深度(就是剑指Offer第38题)
if(cur==null){
return 0;
}
int a=deepth(cur.left);
int b=deepth(cur.right);
return Math.max(a,b)+1;
}
}
以上是关于剑指Offer39:平衡二叉树(Java)的主要内容,如果未能解决你的问题,请参考以下文章