Iバイナリツリー満たしている場合、このプロパティを確認することができるプログラムを記述する必要がなければならない:ツリーの各ノードは、その高さのために特定のアルゴリズム - 複雑さはO(N)
(左右)のサブツリーは、最大1
良くないために異なっていなければなりません:
グッド:
私が構築されたアルゴリズムは、O((n^2)log(n))
複雑性を有します。
ありがとうございました!私が知っている
bool check(node* root){
if(!root->right && !root->left){
return;
}
int h;
int n_node;
int hRight, hLeft;
h = height(root);
hRight = height_right(root);
hLeft = height_left(root);
n_node = pow(2, heihgt+1)-1;
if((hRight > n_node/2 && hLeft <= n_node/4) || (hLeft > n_node/2 && hRight <= n_node/4)
return true;
}
は格好良いではないですが、それは試みです。 このアルゴリズムは、firtsノード(ルート)に対してのみ機能するため、O(nlog(n))であることに注意してください。だから私はノードをスクロールするために別のブロックの中に入れなければならない。
コードはどこですか? –
...あなたは質問がありますか? – ArchbishopOfBanterbury
http://www.geeksforgeeks.org/how-to-determine-if-a-binary-tree-is-balanced/ –