を。
return (t.left == null) == (t.right == null);
最後の式のワラント:これは、この
return (t.left == null && t.right == null)
|| (t.left != null && t.right != null);
またはこのような深刻なオタクのためのようなこの
if ((t.left == null && t.right == null)
|| (t.left != null && t.right != null)){
return true;
}
return false;
のようなこの
if (t.left == null && t.right == null) {
return true;
}
if (t.left != null && t.right != null) {
return true;
}
return false;
のように表現することができますいくつかの議論、私はt left
とright
からnull
を比較し、次にこれらの2つの比較結果を比較して最終結果を生成します。
ツリー内のすべてのノードが、あなたが再帰的にそれをしなければならないでしょう0または2人の子供を持っていないかどうかを確認するには、次の
public static boolean isLeafOrHasTwoChildren(Node t) {
// Both nulls
if (t.left == null && t.right == null) {
return true;
}
// One is null, the other one is not null
if (t.left == null || t.right == null) {
return false;
}
// Recurse down the tree
return isLeafOrHasTwoChildren(t.left)
&& isLeafOrHasTwoChildren(t.right);
}
は問題を。私も別の質問があります、私はちょうど私の質問に感謝したいと思って申し訳ありません。 2人の子供を持つノードが有効なのは、(size-of-larger-child <= size-of-smaller-child * 3)の場合のみです。あなたはノードの最大値と最小値を見つける必要がありますか? – yummyyenni
@yummyyenniツリーサイズに基づく問題は、もっと難しくなります。あなたは常にそれらを再計算するのを避けるために、ノードにカウントを格納する方が良いでしょう。最初にこの問題を解決し、問題が解決しない場合は別の質問を投稿してください。 – dasblinkenlight