Skip to content

Commit 3164dbb

Browse files
committed
rivkode lca
1 parent 84ad16d commit 3164dbb

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
11+
/*
12+
1. ๋ฌธ์ œ ์ดํ•ด
13+
๊ณตํ†ต ์กฐ์ƒ์„ ์ฐพ๋Š”๋ฐ ์ตœ์†Œ์˜ ๊ณตํ†ต ์กฐ์ƒ์„ ์ฐพ๋Š”๋‹ค
14+
์ฆ‰ ์ตœ๋Œ€ํ•œ ๋ฃจํŠธ์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋Š” ๊ทธ๋ฆฌ๊ณ  ๋…ธ๋“œ์™€๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ๊ณตํ†ต ์กฐ์ƒ์„ ์ฐพ๋Š”๋‹ค
15+
16+
2. ์•Œ๊ณ ๋ฆฌ์ฆ˜
17+
๋‹ต์ง€ ์ฐธ๊ณ 
18+
์žฌ๊ท€
19+
20+
3. ๋А๋‚€์ 
21+
22+
์ด์ง„ํŠธ๋ฆฌ์˜ ํŠน์ •์„ ํ™œ์šฉํ•ด์•ผํ–ˆ๋‹ค.
23+
์ด์ง„ํŠธ๋ฆฌ ์ด๋ฏ€๋กœ ์™ผ์ชฝ ๋…ธ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๋ฃจํŠธ๋ณด๋‹ค ์ž‘๊ณ  ์˜ค๋ฅธ์ชฝ์€ ํฌ๋‹ค
24+
์ด ํŠน์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๋ชฉํ‘œ ํŠธ๋ฆฌ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€์•ผํ•œ๋‹ค
25+
์žฌ๊ท€์˜ ๋ฐ˜ํ™˜์กฐ๊ฑด์ด ๊ณตํ†ต์กฐ์ƒ์„ ์ฐพ์•˜์„๋•Œ์ด๋‹ค ์—ฌ๊ธฐ์„œ ๊ณตํ†ต์กฐ์ƒ์ด ๋˜๋ ค๋ฉด 2๊ฐœ์˜ ๊ฐ’์ด ๋ฃจํŠธ๋ณด๋‹ค ํ•˜๋‚˜๋Š” ํฌ๊ณ  ํ•˜๋‚˜๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค
26+
์œ„ ์กฐ๊ฑด์ผ๋•Œ ๊ณตํ†ต์กฐ์ƒ์„ ๊ฐ€์ง€๋ฏ€๋กœ ์ด ์œ„์น˜๊นŒ์ง€ ๋ฃจํŠธ๊ฐ€ ๋‚ด๋ ค์™€์•ผ ํ•œ๋‹ค
27+
28+
๋‹ค์‹œ ๋งํ•ด ์ด ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด 2๊ฐœ์˜ ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ํฐ์ง€ ์ž‘์€์ง€๋ฅผ ํŒ๋‹จํ•˜๊ณ  ๋‘˜๋‹ค ์•„๋‹ˆ๋ผ๋ฉด ๊ณตํ†ต์กฐ์ƒ์ด๋ฏ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค
29+
์ด ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ง„ ํŠธ๋ฆฌ ํŠน์ง•์„ ํ™œ์šฉํ•ด์•ผํ–ˆ๊ณ  ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ์˜ ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ๊ณตํ†ต ์กฐ์ƒ ๋…ธ๋“œ๊นŒ์ง€ ๋‚ด๋ ค์˜จ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค
30+
31+
32+
*/
33+
34+
class Solution {
35+
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
36+
// 2๊ฐœ์˜ ๊ฐ’์ด ๋ฃจํŠธ ๊ฐ’ ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํ™•์ธ
37+
if (p.val < root.val && q.val < root.val) {
38+
return lowestCommonAncestor(root.left, p, q);
39+
// 2๊ฐœ์˜ ๊ฐ’์ด ๋ฃจํŠธ ๊ฐ’ ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํ™•์ธ
40+
} else if (p.val > root.val && q.val > root.val) {
41+
return lowestCommonAncestor(root.right, p, q);
42+
// 2๊ฐœ์˜ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฃจํŠธ ๊ฐ’ ๋ณด๋‹ค ํฌ๊ณ  ํ•˜๋‚˜๋Š” ์ž‘๋‹ค๋ฉด ํ˜„์žฌ ๋ฃจํŠธ๊ฐ€ ์ตœ์†Œ ๊ณตํ†ต ์กฐ์ƒ์ด๋ฏ€๋กœ ๋ฐ˜ํ™˜
43+
} else {
44+
return root;
45+
}
46+
}
47+
}
48+

0 commit comments

Comments
ย (0)