二分木(バイナリツリー)とは
各ノードが最大で2つの子ノードを持つ木構造のデータ構造です。
解説例:
Graphvizとは
Graphvizというライブラリを使用します。
DOT言語を使用してグラフを描画するためのオープンソースライブラリです。
Wiki:
作図プログラム
Python
from graphviz import Digraph
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def draw_tree(node, dot=None):
if dot is None:
dot = Digraph()
if node is None:
return
dot.node(str(node.value), label=str(node.value))
if node.left:
dot.edge(str(node.value), str(node.left.value))
if node.right:
dot.edge(str(node.value), str(node.right.value))
draw_tree(node.left, dot)
draw_tree(node.right, dot)
return dot
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.left.right.right = Node(6)
root.left.right.left = Node(7)
root.left.right.left.right = Node(8)
root.left.right.left.left = Node(9)
draw_tree(root)