w3resource

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:

Python heap queue algorithm: Print a heap as a tree-like data structure.

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.

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

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.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.