判断一颗二叉树是否是平衡二叉树
2017-11-24 15:02
543 查看
//判断一颗二叉树是否是平衡二叉树
public class AvlTree{
//二叉树节点的定义
public static class Node{
public int value;
public Node left;
public Node right;
public Node(int data)
{
this.value=data;
}
}
//判断一颗二叉树是否为平衡二叉树(利用二叉树的后序遍历)
public static boolean isAVL(Node head)
{
boolean[]res=new boolean[1];
res[0]=true;
getHeight(head,1,res);
return res[0];
}
//递归调用获得子树的高度和是否为平衡二叉树
public static int getHeight(Node head,int level,boolean[]res)
{
if(head==null)
{
return level;
}
//左子树高度
int lH=getHeight(head.left,level+1,res);
if(!res[0])
{
return level;
}
//右子树高度
int rH=getHeight(head.right,level+1,res);
if(!res[0])
{
return level;
}
//左右子树高度差
if(Math.abs(lH-rH)>1)
{
res[0]=false;
}
return Math.max(lH,rH);
}
public static void main(String[] args)
{
/**
1
2 3
4 5 6 7
*/
Node head = new Node(1);
head.left = new Node(2);
head.right = new Node(3);
head.left.left = new Node(4);
head.left.right = new Node(5);
head.right.left = new Node(6);
head.right.right = new Node(7);
/**
1
2
4
*/
Node node=new Node(1);
node.left=new Node(2);
node.left.left=new Node(4);
//node.right=new Node(3);
System.out.println(isAVL(head));
System.out.println(isAVL(node));
}
}
相关文章推荐
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一颗二叉树是否是平衡二叉树
- 每日一练(40) - 判断二叉树是否是一颗平衡二叉树
- 后序遍历求解判断一颗二叉树是否为平衡二叉树
- -判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 【算法】判断一颗二叉树是否是平衡二叉树
- java数据结构-二叉树-判断一颗二叉树是否为平衡二叉树
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一颗二叉树是否是平衡二叉树
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- Leetcode 110 判断一颗二叉树是否是平衡二叉树
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- 判断一颗二叉树是否为平衡二叉树
- 【面试题】剑指Offer-39-求二叉树的深度和判断一颗树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树(AVL)
- 【二叉树8】判断一颗树是否是平衡二叉树
- 判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十
- 判断一颗二叉树是否平衡