LoginSignup
3
2

More than 1 year has passed since last update.

Pythonで二分木(バイナリツリー)を描く方法

Posted at

二分木(バイナリツリー)とは

各ノードが最大で2つの子ノードを持つ木構造のデータ構造です。
binary_tree.png
解説例:

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)

出力:
tree.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2