File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Lowest Common Ancestor in Binary search tree
2
+
3
+ class node :
4
+ def __init__ (self ,key ):
5
+ self .key = key
6
+ self .left = None
7
+ self .right = None
8
+
9
+ def lca (root ,n1 ,n2 ):
10
+ if root is None :
11
+ return None
12
+
13
+ if root .key < n1 and root .key < n2 :
14
+ return lca (root .right ,n1 ,n2 )
15
+
16
+ if root .key > n1 and root .key > n2 :
17
+ return lca (root .left ,n1 ,n2 )
18
+
19
+ return root
20
+
21
+ # Consider the following BST
22
+
23
+ # 8
24
+ # / \
25
+ # 3 11
26
+ # / \ / \
27
+ # 2 6 10 13
28
+ # / \ /
29
+ # 5 7 12
30
+
31
+ # Create BST
32
+ root = node (8 )
33
+ l = root .left = node (3 )
34
+ r = root .right = node (11 )
35
+ r .left = node (10 )
36
+ r .right = node (13 )
37
+ r .right .left = node (12 )
38
+ l .left = node (2 )
39
+ l .right = node (6 )
40
+ l .right .left = node (5 )
41
+ l .right .right = node (7 )
42
+
43
+ print (lca (root ,2 ,7 ).key ) # ouputs '3'
You can’t perform that action at this time.
0 commit comments