File tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed
lowest-common-ancestor-of-a-binary-search-tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * [Problem]: [235] Lowest Common Ancestor of a Binary Search Tree
3+ * (https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/)
4+ */
5+
6+ class TreeNode {
7+ val : number ;
8+ left : TreeNode | null ;
9+ right : TreeNode | null ;
10+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
11+ this . val = val === undefined ? 0 : val ;
12+ this . left = left === undefined ? null : left ;
13+ this . right = right === undefined ? null : right ;
14+ }
15+ }
16+
17+ function lowestCommonAncestor (
18+ root : TreeNode | null ,
19+ p : TreeNode | null ,
20+ q : TreeNode | null
21+ ) : TreeNode | null {
22+ //시간복잡도 O(h)
23+ //공간복잡도 O(h)
24+ function recursiveFunc (
25+ root : TreeNode | null ,
26+ p : TreeNode | null ,
27+ q : TreeNode | null
28+ ) : TreeNode | null {
29+ if ( ! p || ! root || ! q ) return null ;
30+ if ( p . val < root . val && q . val < root . val ) {
31+ return recursiveFunc ( root . left , p , q ) ;
32+ }
33+ if ( root . val < p . val && root . val < q . val ) {
34+ return recursiveFunc ( root . right , p , q ) ;
35+ }
36+
37+ return root ;
38+ }
39+
40+ //시간복잡도 O(h)
41+ //공간복잡도 O(1)
42+ function loopFunc (
43+ root : TreeNode | null ,
44+ p : TreeNode | null ,
45+ q : TreeNode | null
46+ ) : TreeNode | null {
47+ if ( ! p || ! q || ! root ) return null ;
48+
49+ let node = root ;
50+
51+ while ( node ) {
52+ if ( p . val < node . val && q . val < node . val ) {
53+ node = node ?. left ! ;
54+ } else if ( p . val > node . val && q . val > node . val ) {
55+ node = node ?. right ! ;
56+ } else {
57+ return node ;
58+ }
59+ }
60+
61+ return null ;
62+ }
63+ }
You can’t perform that action at this time.
0 commit comments