[オファー] [55-2] []平衡二分木

タイトル説明

  入力バイナリツリーのルートノードは、ツリーの決意は、平衡二分木ではありません。二分木の深さが右サブツリー内の任意のノードを残した場合、それは、平衡二分木であり、せいぜい1だけ異なります。例えば、図に二分木は、平衡二分木です。

牛が質問がネットワークに対処はねのけます

アイデア解析

  高さの差が1より大きい場合、バイナリツリー中の深さの左右のサブツリー間の高さの差を求める、それは-1を返し、説明は、平衡二分木、そうでない場合は深さの二分木ではありません。

テストケース

  1. 機能テスト:バイナリツリーのバランスをとる;ないバランスの取れたバイナリツリー、バイナリツリー内のすべてのノードには、左/右部分木ではありません。
  2. 特別な入力テスト:バイナリツリー内の唯一のノードと、バイナリツリーのnullptrヘッドノードポインタ。

Javaコード

public class Offer055_02 {
    public static void main(String[] args) {
        test1();
        test2();
        test3();
        
    }

    public static  boolean IsBalanced_Solution(TreeNode root) {
        return Solution1(root);
    }

    private static boolean Solution1(TreeNode root) {
        return getDepth(root)!=-1;
    }
    
    private static int  getDepth(TreeNode root) {
        if(root==null) return 0;
        int leftDep = getDepth(root.left);
        if(leftDep == -1) return -1;
        int rightDep = getDepth(root.right);
        if(rightDep==-1) return -1;
        return Math.abs(leftDep-rightDep) >1 ? -1 :(Math.max(leftDep,rightDep) + 1);
    }

    private static void test1() {

    }

    private static void test2() {

    }
    private static void test3() {

    }

}

コードリンク

安全コードを証明するためにオファー-Java

おすすめ

転載: www.cnblogs.com/haoworld/p/offer552-ping-heng-er-cha-shu.html