バランスの取れたバイナリツリーの各ノードでは、左の子サブツリーと右の子サブツリーの高さの最大差は最大1です。
二分木の高さは、ルートノードからルートから最も遠いノードの子までの距離です。
以下に例を示します。
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
バイナリツリーの高さ:4
以下は、二分木とそれらがバランスされているかどうかに関するレポートです。
上記のツリーは不均衡です。
上記のツリーはバランスが取れています。
バイナリツリーのルートを入力として受け入れ、ツリーのバランスが取れていない場合はfalsey値を返し、ツリーのバランスが取れている場合はtrue値を返す、可能な限り最短のプログラムを作成します。
入力
バイナリツリーのルート。これは、ルートオブジェクトへの参照の形式でも、バイナリツリーの有効な表現であるリストの形式でもかまいません。
出力
真理値を返します:ツリーのバランスが取れている場合
falsey値を返します。ツリーのバランスが取れていない場合。
二分木の定義
ツリーは、値と2つの他のツリーまたはそれらへのポインターを含むオブジェクトです。
バイナリツリーの構造は次のようになります。
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
バイナリツリーにリスト表現を使用する場合、次のようになります。
[root_value, left_node, right_node]
4
と、残りのツリーのバランスが取れていますか?