Skip to content

Commit f061f18

Browse files
authored
[parkhojeong] WEEK 13 Solutions (#2865)
* lowest-common-ancestor-of-a-binary-search-tree solution * kth-smallest-element-in-a-bst solution
1 parent 6e75412 commit f061f18

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def kthSmallest(self, root: TreeNode | None, k: int) -> int:
9+
arr = []
10+
11+
def inorrder(node: TreeNode):
12+
if node.left:
13+
inorrder(node.left)
14+
15+
arr.append(node.val)
16+
17+
if node.right:
18+
inorrder(node.right)
19+
20+
inorrder(root)
21+
return arr[k - 1]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution:
9+
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
10+
11+
def search(node: TreeNode, target: int):
12+
stack = [node]
13+
arr = []
14+
while stack:
15+
node = stack.pop()
16+
arr.append(node)
17+
if node.val > target:
18+
stack.append(node.left)
19+
elif node.val < target:
20+
stack.append(node.right)
21+
22+
return arr
23+
24+
arr1 = set(search(root, p.val))
25+
arr2 = search(root, q.val)
26+
27+
for node in arr2[::-1]:
28+
if node in arr1:
29+
return node

0 commit comments

Comments
 (0)