Skip to content

Commit 75d02bf

Browse files
committed
recursive solution for tree programs
1 parent b6c6802 commit 75d02bf

2 files changed

Lines changed: 33 additions & 7 deletions

File tree

LinkedList/doubly_linked_list_c_k.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ def revDLL(head):
4545
def modify(h, c, k):
4646
final = h
4747
data = k - c
48+
# insert new node if required
4849
while h:
4950
if data == h.data:
51+
# if node with value==data already exists, do nothing
5052
break
5153
if data > h.data:
5254
h = h.n
@@ -62,7 +64,8 @@ def modify(h, c, k):
6264
break
6365
while h:
6466
if k == h.data:
65-
h.prev.n = h.n
67+
if h.prev:
68+
h.prev.n = h.n
6669
if h.n:
6770
h.n.prev = h.prev
6871
h = h.n
@@ -80,9 +83,9 @@ def modify(h, c, k):
8083
head.n.n.n.n = NodeDLL(10)
8184
head.n.n.n.n.prev = head.n.n.n
8285
print "Original DLL: ", printDLL(head)
83-
print "Original Reversed DLL: ", revDLL(head.n.n.n.n)
84-
k = 9
85-
c = 5
86+
# print "Original Reversed DLL: ", revDLL(head.n.n.n.n)
87+
k = 2
88+
c = 0
8689
nh = modify(head, c, k)
8790
print "Modified DLL: ", printDLL(nh)
88-
print "Reversed DLL: ", revDLL(nh.n.n.n.n)
91+
# print "Reversed DLL: ", revDLL(nh.n.n.n.n)

TreeADT/pair_with_sum_bst.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,27 @@ def get_pair_with_sum(root, target):
5454
return False
5555

5656

57+
def get_pair_with_sum_rec(root, node, val):
58+
if not node:
59+
return False
60+
orignl_root = root
61+
diff = val - node.data
62+
if has_other_pair(orignl_root, node, diff):
63+
first_part = val - diff
64+
return first_part, diff
65+
return get_pair_with_sum_rec(orignl_root, node.left, sum) or \
66+
get_pair_with_sum_rec(orignl_root, node.right, sum)
67+
68+
69+
def has_other_pair(root, this_node, rem):
70+
if not root:
71+
return
72+
if root.data == rem and this_node!=root:
73+
return root.data
74+
elif root.data < rem:
75+
return has_other_pair(root.right, this_node, rem)
76+
elif root.data > rem:
77+
return has_other_pair(root.left, this_node, rem)
5778

5879
if __name__ == "__main__":
5980
root = BSTNode(4)
@@ -67,5 +88,7 @@ def get_pair_with_sum(root, target):
6788
root.right.left = BSTNode(5)
6889
root.right.right = BSTNode(7)
6990

70-
sum = 8
71-
print get_pair_with_sum(root, sum)
91+
sum = 4
92+
for sum in xrange(1, 15):
93+
print get_pair_with_sum(root, sum),
94+
print get_pair_with_sum_rec(root, root, sum)

0 commit comments

Comments
 (0)