以下是Java拼圖(http://code-exercises.com/programming/medium/28/strict-binary-tree-check)中的一個小問題。其任務是編寫一種方法來檢查在給定的二叉樹中是否所有節點都有0或2個子節點。Java中二叉樹的遞歸檢查
他們的解決方案是以下
public Boolean isStrictTree(TreeNode node) {
if (node == null) {return true;}
if ((node.left() == null && node.right() != null) || (node.left() != null && node.right() == null)) {return false;}
return isStrictTree(node.left()) && isStrictTree(node.right());
}
我想出了類似的東西,但它不工作。所不同的是
一)1號線 - 處理無效的情況下(返回「零」,而不是「真」)
B)遞歸結構 - 礦以某種方式混在一起(在某種程度上即應如果我追蹤它會發生什麼事情),而不是將解決方案分散在兩行 - 條件語句和返回語句。
public Boolean isStrictTree(TreeNode node) {
if (node == null) {return null;}
else if ((isStrictTree(node.left()) == true) && (isStrictTree(node.right())==null)) {return false;}
return true;
}
該腳本運行但不返回任何內容。我真的有興趣瞭解爲什麼它不起作用,似乎是我可以在這裏學到的東西,所以任何見解都是值得讚賞的。
請提供整個MCVE。添加驅動問題結果的主程序。我很好奇如何定義一個返回類型和值的例程「不返回任何東西」。在語義上,這應該是不可能的。 – Prune