I really don’t understand print_leaf_nodes
part. How we go from leaf node 10 to node 60? I spent so much time on this already. If someone could help me out, I highly appreciate it! Below is the solution code I copied and pasted. I added some code in that part to demonstrate my point. I hope my question makes sense. Thank you!
def print_left_perimeter(root, result):
while root != None:
curr_val = root.data
if root.left != None:
root = root.left
elif root.right != None:
root = root.right
else: # leaf node
break
# print(str(curr_val) + " ", end="")
result.append(str(curr_val) + " ")
def print_right_perimeter(root, result):
r_values = [] # stack for right side values.
while root != None:
curr_val = root.data
if root.right != None:
root = root.right
elif root.left != None:
root = root.left
else: # leaf node
break
r_values.append(curr_val)
while len(r_values) != 0:
# print(str(r_values.pop()) + " ", end="")
result.append(str(r_values.pop()) + " ")
def print_leaf_nodes(root, result):
"""
START: my added code for understanding
"""
if root != None:
print("enter leaf", root.data)
else:
print("enter leaf", None)
"""
END: my added code ends
"""
if root != None:
print_leaf_nodes(root.left, result)
if root.left == None and root.right == None:
"""
START: my added code for understanding
"""
if root:
print("append to leaf to result", root.data)
else:
print("append to leaf to result", None)
"""
END: my added code ends
"""
# print(str(root.data) + " ", end="")
result.append(str(root.data) + " ")
print_leaf_nodes(root.right, result)
def display_tree_perimeter(root):
result = []
if root != None:
# print(str(root.data) + " ", end="")
result.append(str(root.data) + " ")
print_left_perimeter(root.left, result)
if root.left != None or root.right != None:
print_leaf_nodes(root, result)
print_right_perimeter(root.right, result)
return ('').join(result)
arr = [100,50,200,25,60,350,10,70,400]
root = create_BST(arr)
print("\nPrint tree perimeter\n")
print(display_tree_perimeter(root))