インオーダーおよびポストオーダー トラバーサルによる LCA は、簡単に実装でき、理解できました。
ただし、再帰的なボトムアップ アプローチがあります。
私はオンラインでコードを見ましたが、1行理解できませんでした:
コードは次のとおりです。
public Node lowestCommonAncestor(int val1, int val2,Node root){
if(root == null){
return null;
}
if(root.data == val1 || root.data == val2){
return root;
}
Node left = lowestCommonAncestor(val1, val2, root.left);
Node right = lowestCommonAncestor(val1, val2, root.right);
if(left != null && right != null){
return root;
}
return left != null ? left : right;
}
val1 と val2 は、LCA を見つける必要がある 2 つのノードの値です。
最後の行は私が立ち往生しているところです。
return left != null ? left : right;
誰かがこれを説明できますか?
ありがとうございました。