class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
self._insert(value, self.root)
def _insert(self, value, node):
if value < node.value:
if node.left is None:
node.left = Node(value)
else:
self._insert(value, node.left)
else:
if node.right is None:
node.right = Node(value)
else:
self._insert(value, node.right)
def dfs_inorder(self):
if self.root is None:
return []
return self._dfs_inorder(self.root)
def _dfs_inorder(self, node):
result = []
if node.left is not None:
result += self._dfs_inorder(node.left)
result.append(node.value)
if node.right is not None:
result += self._dfs_inorder(node.right)
return result
# Example usage
tree = BinaryTree()
tree.insert(5)
tree.insert(3)
tree.insert(7)
tree.insert(1)
tree.insert(4)
tree.insert(6)
tree.insert(8)
inorder_traversal = tree.dfs_inorder()
print("Inorder Traversal:", inorder_traversal)