Boundary Traversal means visiting the nodes on the outer edge of the tree in a specific order: left boundary (top to bottom), leaves (left to right), and right boundary (bottom to top).
Click to reveal answer
beginner
Which parts of the binary tree are included in the boundary traversal?
The boundary traversal includes three parts: 1) Left boundary (excluding leaves), 2) All leaf nodes (left to right), 3) Right boundary (excluding leaves, in reverse order).
Click to reveal answer
intermediate
Why do we exclude leaf nodes from the left and right boundaries during boundary traversal?
Leaf nodes are excluded from left and right boundaries to avoid duplication because all leaf nodes are already included separately in the leaf nodes traversal step.
Click to reveal answer
intermediate
How do you collect the right boundary nodes in boundary traversal?
Right boundary nodes are collected by traversing from the root's right child down to the bottom, excluding leaves, and then added to the result in reverse order (bottom to top).
Click to reveal answer
beginner
What is the time complexity of boundary traversal of a binary tree?
The time complexity is O(n), where n is the number of nodes, because each node is visited at most once during the traversal.
Click to reveal answer
Which nodes are visited first in boundary traversal of a binary tree?
ARight boundary nodes (bottom to top)
BLeft boundary nodes (top to bottom)
CLeaf nodes (left to right)
DRoot node only
✗ Incorrect
Boundary traversal starts with the left boundary nodes from top to bottom.
In boundary traversal, how are leaf nodes collected?
AFrom left subtree only
BOnly from the root node
CFrom right subtree only
DFrom left to right across the entire tree
✗ Incorrect
Leaf nodes are collected from left to right across the entire tree.
Why do we add right boundary nodes in reverse order during boundary traversal?
ATo maintain anti-clockwise order
BTo avoid duplicates
CBecause right boundary nodes are leaves
DTo sort nodes by value
✗ Incorrect
Adding right boundary nodes in reverse order maintains the anti-clockwise boundary traversal order.
Which of these nodes is NOT included in the left boundary during boundary traversal?
ALeaf nodes
BLeft child nodes excluding leaves
CRoot node
DNodes on the path from root to leftmost leaf
✗ Incorrect
Leaf nodes are excluded from the left boundary and collected separately.
What is the overall time complexity of boundary traversal?
AO(log n)
BO(n^2)
CO(n)
DO(n log n)
✗ Incorrect
Boundary traversal visits each node at most once, so the time complexity is O(n).
Explain the steps to perform boundary traversal of a binary tree.
Think about the three parts of the boundary and their order.
You got /4 concepts.
Why is it important to exclude leaf nodes from left and right boundaries during boundary traversal?
Consider how leaf nodes appear in multiple parts.
You got /3 concepts.
Practice
(1/5)
1. What does the boundary traversal of a binary tree include?
easy
A. Left boundary, leaves, and right boundary nodes
B. Only leaf nodes
C. Only root node
D. All nodes in level order
Solution
Step 1: Understand boundary traversal components
Boundary traversal includes nodes on the left edge, all leaf nodes, and nodes on the right edge of the tree.
Step 2: Compare options with definition
Only Left boundary, leaves, and right boundary nodes correctly lists left boundary, leaves, and right boundary nodes.
Final Answer:
Left boundary, leaves, and right boundary nodes -> Option A
Quick Check:
Boundary traversal = left boundary + leaves + right boundary [OK]
Hint: Remember boundary = left edge + leaves + right edge [OK]
Common Mistakes:
Confusing boundary traversal with level order traversal
Ignoring leaf nodes in boundary traversal
Including all nodes instead of just edges and leaves
2. Which of the following is the correct Python function signature for boundary traversal of a binary tree?
easy
A. def boundaryTraversal(root, result):
B. def boundaryTraversal(root, left, right):
C. def boundaryTraversal():
D. def boundaryTraversal(root):
Solution
Step 1: Identify typical function signature
Boundary traversal usually takes the root node as input and returns the traversal list.
Step 2: Check options for correct signature
def boundaryTraversal(root): takes only root as input, which is standard and sufficient.
Final Answer:
def boundaryTraversal(root): -> Option D
Quick Check:
Function signature with root only is correct [OK]
Hint: Boundary traversal function needs only root parameter [OK]
Common Mistakes:
Adding unnecessary parameters like left and right
Missing root parameter
Using empty parameter list
3. What is the output of the boundary traversal for the following binary tree?
1
/ \
2 3
/ \ \
4 5 6
/ \ /
7 8 9
medium
A. [1, 2, 4, 7, 8, 9, 6, 3]
B. [1, 2, 4, 7, 8, 9, 6]
C. [1, 4, 7, 8, 9, 6, 3]
D. [1, 2, 5, 7, 8, 9, 6, 3]
Solution
Step 1: Identify left boundary nodes
Left boundary nodes are 1, 2, 4 (excluding leaf duplicates).
Step 2: Identify leaf nodes
Leaves are 4, 7, 8, 9, 6.
Step 3: Identify right boundary nodes
Right boundary nodes are 3, 6 (excluding leaf duplicates), so only 3.
Hint: List left boundary, leaves, then right boundary reversed [OK]
Common Mistakes:
Including leaf nodes twice in boundary
Missing right boundary node 3
Incorrect order of nodes
4. The following code attempts boundary traversal but misses some nodes. What is the bug?
def boundaryTraversal(root):
result = []
def leftBoundary(node):
if node and (node.left or node.right):
result.append(node.val)
if node.left:
leftBoundary(node.left)
else:
leftBoundary(node.right)
def leaves(node):
if node:
leaves(node.left)
if not node.left and not node.right:
result.append(node.val)
leaves(node.right)
def rightBoundary(node):
if node and (node.left or node.right):
if node.right:
rightBoundary(node.right)
else:
rightBoundary(node.left)
result.append(node.val)
if root:
result.append(root.val)
leftBoundary(root.left)
leaves(root.left)
leaves(root.right)
rightBoundary(root.right)
return result
medium
A. Leaves function misses leaf nodes on right subtree
B. Right boundary nodes are appended before recursive call
C. Left boundary includes leaf nodes causing duplicates
D. Root node is not added to result
Solution
Step 1: Analyze leftBoundary function
Left boundary adds nodes with children but does not exclude leaf nodes explicitly, so leaf nodes can be added twice.
Step 2: Check leaves and rightBoundary functions
Leaves function correctly adds leaf nodes; rightBoundary appends after recursion, which is correct.
Step 3: Identify bug
Left boundary includes leaf nodes causing duplicates in result.
Final Answer:
Left boundary includes leaf nodes causing duplicates -> Option C
Quick Check:
Left boundary must exclude leaves to avoid duplicates [OK]
Hint: Exclude leaf nodes from left boundary to avoid duplicates [OK]
Common Mistakes:
Appending right boundary nodes before recursion
Not adding root node
Leaves function missing some leaves
5. Given a binary tree where some nodes have only one child, how should the boundary traversal handle nodes with a single child to ensure all boundary nodes are included exactly once?
hard
A. Skip nodes with only one child in boundary traversal
B. Traverse left boundary by always choosing left child if present, else right child; similarly for right boundary, choose right child if present, else left child
C. Include all nodes regardless of position to avoid missing any
D. Only include leaf nodes and root node in boundary traversal
Solution
Step 1: Understand boundary traversal with single-child nodes
When a node has only one child, boundary traversal must follow that child to include all boundary nodes.
Step 2: Apply traversal rules
For left boundary, choose left child if exists; if not, choose right child. For right boundary, choose right child if exists; if not, choose left child.
Step 3: Avoid duplicates by excluding leaves in boundary functions
Leaves are handled separately to avoid duplicates.
Final Answer:
Traverse left boundary by always choosing left child if present, else right child; similarly for right boundary, choose right child if present, else left child -> Option B
Quick Check:
Follow child presence rules to cover all boundary nodes [OK]
Hint: Choose child present on boundary side to cover all nodes [OK]