LCA by inorder и postorder traversal был легко реализован и понятен мной.Самый низкий общий код предка объяснения
Но есть рекурсивный подход снизу вверх.
Я посмотрел на код в Интернете, и я не понял одну строку:
Вот код:
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;
}
знач1 и val2 являются значение два узла, чей LCA должен быть найденный.
Последняя строка, на которой я застрял.
return left != null ? left : right;
Может кто-нибудь объяснить это?
спасибо.
Если вы считаете, что это полезно, то пожалуйста, воздержитесь. – devsda