二分木の高さは、ルートノードからルートから最も遠いノードの子までの距離です。
以下に例を示します。
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
バイナリツリーの高さ:4
二分木の定義
ツリーは、符号付き整数値と、他の2つのツリーまたはそれらへのポインターを含むオブジェクトです。
二分木構造体の構造は次のようになります。
typedef struct tree
{
struct tree * l;
struct tree * r;
int v;
} tree;
チャレンジ:
入力
二分木の根
出力
二分木の高さを表す数
入力としてバイナリツリーのルートが与えられたと仮定して、バイナリツリーの高さを計算して高さを返す最短のプログラムを作成します。最小バイト数(空白を含む)のプログラムが優先されます。
h
。この課題のために、リストだけで構成された特定の構造を定義する方が良いかもしれません。
[root_value, left_node, right_node]
あり、ここでleft_node
およびright_node
はそれぞれ二分木も受け入れ可能ですか?多くの言語では簡単ですが、他の言語では楽しいかもしれません。
a tree is an object that contains a value and either two other trees or pointers to them
。オブジェクトのない言語を含む定義もいいでしょう。