Leetcode
2020.05.01 18:51

# 235. Lowest Common Ancestor of a Binary Search Tree

조회 수 429 추천 수 0 댓글 0
?

#### 단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

#### 단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”

Given binary search tree:  root = [6,2,8,0,4,7,9,null,null,3,5]

Example 1:

```Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
Output: 6
Explanation: The LCA of nodes `2` and `8` is `6`.
```

Example 2:

```Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
Output: 2
Explanation: The LCA of nodes `2` and `4` is `2`, since a node can be a descendant of itself according to the LCA definition.
```

Note:

• All of the nodes' values will be unique.
• p and q are different and both values will exist in the BST.

```/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode pNode = p;
TreeNode qNode = q;
TreeNode node = root;

while(node != null){
TreeNode parent = node;

if(parent.val < qNode.val && parent.val < pNode.val){
node = node.right;
}else if(qNode.val < parent.val && pNode.val < parent.val){
node = node.left;
}else{
return node;
}
}
return null;
}
}```

```/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode pNode = p;
TreeNode qNode = q;

if(root.val < qNode.val && root.val < pNode.val){
return lowestCommonAncestor(root.right, p, q);
}else if(qNode.val < root.val && pNode.val < root.val){
return lowestCommonAncestor(root.left, p, q);
}
return root;
}
}```

?

 제목+내용제목내용댓글이름닉네임아이디태그
1. 720. Longest Word in Dictionary

2. 225. Implement Stack using Queues

3. 56. Merge Intervals

4. 844. Backspace String Compare

5. 222. Count Complete Tree Nodes

6. 697. Degree of an Array

7. 605. Can Place Flowers

8. 724. Find Pivot Index

9. 448. Find All Numbers Disappeared in an Array

10. 628. Maximum Product of Three Numbers

11. 532. K-diff Pairs in an Array

12. 897. Increasing Order Search Tree

13. 872. Leaf-Similar Trees

14. 876. Middle of the Linked List

15. 203. Remove Linked List Elements

16. 997. Find the Town Judge

17. 270. Closest Binary Search Tree Value

18. 687. Longest Univalue Path

19. 783. Minimum Distance Between BST Nodes

20. 235. Lowest Common Ancestor of a Binary Search Tree

Board Pagination Prev 1 2 3 4 Next
/ 4