剣はオファーを指します—55_2。バランス二分木—分析とコード(Java)

剣はoffer-55_2を指します。バランス二分木-分析とコード[Java]

1.タイトル

二分木を入力して、二分木が平衡二分木であるかどうかを判別します。
ここでは、それがソートされた二分木であるかどうかではなく、そのバランスを考慮する必要があるだけです。

2、分析とコード

1.深さを記録します

(1)考える

二分木のノードの左右のサブツリーの差が1以下の場合、それは平衡二分木です。
各ノードの深さを記録することで、再帰の繰り返しを回避できます。さらに、ノードごとに、その左右のサブツリーの深さを最初に記録し、バランスが取れているかどうかを記録してから、ノード自体の深さを計算できます。このプロセスの特性に応じて、ポストオーダートラバーサルの方法を選択できます。

(2)コード

public class Solution {
    
    
    public boolean IsBalanced_Solution(TreeNode root) {
    
    
        return TreeDepth(root) == -1 ? false : true;
    }
     
    public int TreeDepth(TreeNode root) {
    
    
        if (root == null)
            return 0;
        int left = TreeDepth(root.left);
        int right = TreeDepth(root.right);
        if (left == -1 || right == -1 || left - right > 1 || right - left > 1)
            return -1;
        return Math.max(left, right) + 1;
    }
}

(3)結果

実行時間:11ミリ秒、9440kのメモリを占有します。

3、その他

何もありません。

おすすめ

転載: blog.csdn.net/zml66666/article/details/111561863