Skip to content

Commit 32d8bae

Browse files
committed
Added very hard problem
1 parent ca572be commit 32d8bae

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

Very Hard/compare-leaf-traversal.py

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
# COMPARE LEAF TRAVERSAL
3+
4+
# This is an input class. Do not edit.
5+
class BinaryTree:
6+
def __init__(self, value, left=None, right=None):
7+
self.value = value
8+
self.left = left
9+
self.right = right
10+
11+
# O(N + M) time and O(max(H1, H2)) space
12+
def compareLeafTraversal(tree1, tree2):
13+
# Write your code here.
14+
list1, _ = connectLeafNodes(tree1)
15+
list2, _ = connectLeafNodes(tree2)
16+
17+
current1 = list1
18+
current2 = list2
19+
while current1 is not None and current2 is not None:
20+
if current1.value != current2.value:
21+
return False
22+
23+
current1 = current1.right
24+
current2 = current2.right
25+
26+
return current1 is None and current2 is None
27+
28+
def connectLeafNodes(currentNode, head=None, previousNode=None):
29+
if currentNode is None:
30+
return head, previousNode
31+
32+
if isLeafNode(currentNode):
33+
if previousNode is None:
34+
head = currentNode
35+
else:
36+
previousNode.right = currentNode
37+
38+
previousNode = currentNode
39+
40+
leftHead, leftPreviousNode = connectLeafNodes(currentNode.left, head, previousNode)
41+
return connectLeafNodes(currentNode.right, leftHead, leftPreviousNode)
42+
43+
def isLeafNode(node):
44+
return node.left is None and node.right is None

0 commit comments

Comments
 (0)