求一颗二叉树是否为平衡二叉树

《求一颗二叉树是否为平衡二叉树》


//二叉树的节点的定义
class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode(int x) { val = x; }
  }

public class Solution {
     //递归法求二叉树是否为平衡二叉树
    public boolean isBalanced(TreeNode root) {
          if(root==null) 
             return true;
          if(Math.abs(TreeDeep(root.left)-TreeDeep(root.right))>1)
             return false;
          return isBalanced(root.left)&&isBalanced(root.right);
    }

    //写一个函数求二叉树的深度
    public int TreeDeep(TreeNode  root){
          if(root==null) return 0;
          return Math.max(TreeDeep(root.left),TreeDeep(root.right))+1;
    }
    public static void main(String[]args){
        //System.out.println("Hello World!");
      TreeNode root=new  TreeNode(1);
      root.left=new TreeNode(2);
      root.right=new TreeNode(3);
      root.left.left=new TreeNode(4);
       root.left.left.left=new TreeNode(5);
      Solution s=new Solution();
      System.out.println(s.isBalanced(root));
    }
}
    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/zuochao_2013/article/details/81142970
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞