数日前、この同じプロジェクトに関する質問をしました。私たちのグループは、バイナリ検索ツリーが存在するかどうかを判断するために使用されるメソッドコンプリート。Recursivleyバイナリ検索ツリーが完成したかどうかのテスト
ラッパーメソッドとヘルパーメソッドを使用して再帰的に実行しています。
ツリーのh-1レベル(hは高さ)までチェックして完全であることを確認する必要があることがわかっているので、最終レベルのすべてのリーフノードが左から隙間なく右に。
私たちが何を試しても、残っているリーフノードを再帰的にチェックして、それらが左から右へ連続していることを確認する方法を見つけることはできません。しかし、我々はそれがレベル(h-1)まで完璧であることを確かめることができる。
最後のレベルの葉ノードを再帰的にチェックして、それらが左揃えになっていることを確認する方法について、誰かが正しい方向を教えてくれますか?
これまでのコードは?すべての些細な例は、すべて完璧なツリー以来isPerfect()メソッドで処理され
public boolean isComplete()
{
if (isPerfect(root))
return true;
return isComplete(root);
}
/**
*
* @param node
* @return
*/
private boolean isComplete(Node node)
{
if (height(node) > 1)
{
if (node.left != null && node.right != null && (height(node.left) == height(node.right)))
return isComplete(node.left) && isComplete(node.right);
else
return false;
}
}
PSも完了し
私がテストしたり実行したり、これをコンパイルしていません。したがって、コードが動作する間にマイナーバグ –
に注意してください。ラッパーメソッドで1つのパラメータのみを使用するという要件から逸脱しています。しかし、入力していただきありがとうございます!私はおそらくあなたが何かを思いつくために与えたステップを使用することができます。 – sbowde4
@ sbowde4あなたが気づいたかどうかわかりません、ラッパーは1つのパラメーターだけを使用します –