Вопрос: Учитывая двоичное дерево поиска (BST), найдите наименьшего общего предка (LCA) двух заданных узлов в BST.Самый низкий общий предок двоичного кода дерева поиска не принимался
В соответствии с определением LCA в Википедии: «Самый низкий общий предок определяется между двумя узлами v и w как наименьший узел в T, который имеет как v, так и w как потомки (где мы разрешаем узлу быть потомком само по себе). «
Я попытался написать два способа решения проблемы. Второй принимается, но я не понимаю, почему первый ошибается.
коды являются следующие:
1:
public class Solution {
public TreeNode lowestCommonAncestor(TreeNode root,TreeNode p,TreeNode q) {
int max = Math.max(p.val, q.val);
int min = Math.min(p.val, q.val);
while(max<root.val) {
root=root.left;
}
while (min>root.val) {
root=root.right;
}
return root;
}
}
2:
public class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
int max = Math.max(p.val, q.val);
int min = Math.min(p.val, q.val);
while (max<root.val||min>root.val) {
root=root.val<min?root.right:root.left;
}
return root;
}
}
Есть ли разница, если я разделить время цикла? Благодаря!
Включите всю релевантную информацию в вопрос - ссылка только не допускается – Amit
Хорошо, я ее редактирую, спасибо. –