Files
obsidian/АиСД/Задачи/LeetCode/Lowest Common Ancestor of a Binary Tree.md
T
roma-dxunvrs f57762fd3b Init
2026-09-03 21:40:46 +03:00

21 lines
899 B
Markdown

Leetcode #236 | #Medium | [[Деревья]] | [[BST]]
## Идея
Заводим указатель, изначально на root, если обе ноды меньше указателя, то идем влево, если обе больше, то спускаемся вправо, иначе - мы нашли и это current. Задача на свойство бинарного дерева поиска
## [[Big-O]]
- Время ```O(H)```
- Память ```O(1)```
H - высота дерева
## Код
```Java
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode cur = root;
while (cur != null) {
if (p.val < cur.val && q.val < cur.val) cur = cur.left;
else if (p.val > cur.val && q.val > cur.val) cur = cur.right;
else return cur;
}
return null;
}
}
```