Bottom View of a Binary Tree - Iterative Approach
Visualization Player
Solution
Algorithm Steps
Code
Python
Java
JavaScript
C
C++
C#
Go
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
from collections import deque
def bottomView(root):
if not root:
return []
q = deque([(root, 0)])
hdMap = {}
while q:
node, hd = q.popleft()
hdMap[hd] = node.val
if node.left:
q.append((node.left, hd - 1))
if node.right:
q.append((node.right, hd + 1))
result = [hdMap[hd] for hd in sorted(hdMap)]
return result
if __name__ == '__main__':
# Construct binary tree:
# 20
# / \
# 8 22
# / \ \
# 5 3 25
# / \
# 10 14
root = TreeNode(20,
TreeNode(8, TreeNode(5), TreeNode(3, TreeNode(10), TreeNode(14))),
TreeNode(22, None, TreeNode(25)))
print(bottomView(root))