class Node:
def __init__(self, val):
self.val = val
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, val):
if not self.head:
self.head = Node(val)
return
curr = self.head
while curr.next:
curr = curr.next
curr.next = Node(val)
def find(self, val):
curr = self.head
while curr:
if curr.val == val:
return True
curr = curr.next
return False
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def find(self, val):
if self.val == val:
return True
left_found = self.left.find(val) if self.left else False
if left_found:
return True
right_found = self.right.find(val) if self.right else False
return right_found
# Driver code
# Linked list: 1->2->3->4->5
ll = LinkedList()
for v in [1, 2, 3, 4, 5]:
ll.append(v)
# Array
arr = [1, 2, 3, 4, 5]
# Tree:
# 1
# / \
# 2 3
# / \
# 4 5
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
print("Linked list find 5:", ll.find(5))
print("Array find 5:", 5 in arr)
print("Tree find 5:", root.find(5))while curr:
if curr.val == val:
return True
curr = curr.next
Traverse linked list nodes one by one to find value
if self.val == val:
return True
Check current tree node for value
left_found = self.left.find(val) if self.left else False
if left_found:
return True
Search left subtree recursively
right_found = self.right.find(val) if self.right else False
return right_found
Search right subtree recursively if not found in left
Linked list find 5: True
Array find 5: True
Tree find 5: True