Python: Print a heap as a tree-like data structure
19. Heap Tree Display
Write a Python program to print a heap as a tree-like data structure.
Sample Solution:
Python Code:
import math
from io import StringIO
#source https://bit.ly/38HXSoU
def show_tree(tree, total_width=60, fill=' '):
    """Pretty-print a tree.
    total_width depends on your input size"""
    output = StringIO()
    last_row = -1
    for i, n in enumerate(tree):
        if i:
            row = int(math.floor(math.log(i+1, 2)))
        else:
            row = 0
        if row != last_row:
            output.write('\n')
        columns = 2**row
        col_width = int(math.floor((total_width * 1.0) / columns))
        output.write(str(n).center(col_width, fill))
        last_row = row
    print (output.getvalue())
    print ('-' * total_width)
    return
#test
import heapq
heap = []
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
heapq.heappush(heap, 3)
heapq.heappush(heap, 4)
heapq.heappush(heap, 7)
heapq.heappush(heap, 9)
heapq.heappush(heap, 10)
heapq.heappush(heap, 8)
heapq.heappush(heap, 16)
heapq.heappush(heap, 14)
show_tree(heap)
Sample Output:
                             1                              
              2                             3               
       4              7              9              10      
   8      16     14  
------------------------------------------------------------
Flowchart:
 
For more Practice: Solve these Related Problems:
- Write a Python program to print a heap (represented as a list) in a tree-like structure, displaying parent-child relationships clearly.
- Write a Python script to visualize a heap as a binary tree with proper indentation for each level.
- Write a Python program to format and display a heap structure as a tree diagram, indicating levels and nodes.
- Write a Python function to take a heap list and print it as a structured tree with branches representing the child nodes.
Go to:
Previous: Write a Python program to find the nth ugly number using Heap queue algorithm.
Next: Write a Python program to combine two given sorted lists using heapq module.Python Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
