二分木を作ってみます。
概要
二分木(二進木、バイナリツリー、英: binary tree)は、データ構造の1つである。根付き木構造の中で、あるノード(節点 node)が持つ子の数が高々2であるものをいう。典型的には2つの子はそれぞれ「左」「右」と呼ばれる。
たとえば、二分探索や二分ヒープを実装するために使われる。
二分木 – Wikipedia
サンプルコード
import random
def get_last_child(parent_node, node):
if random.randint(0, 1) == 0:
if parent_node.left is None:
parent_node.left = node
else:
get_last_child(parent_node.left, node)
else:
if parent_node.right is None:
parent_node.right = node
else:
get_last_child(parent_node.right, node)
def create_tree(element_size):
class Node(object):
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
root_node = Node(0)
parent_node = root_node
node_list = [root_node]
for i in range(1, element_size):
node = Node(i)
get_last_child(parent_node, node)
node_list.append(node)
parent_node = node_list[random.randint(0, len(node_list)-1)]
return root_node
tree = create_tree(40)
生成した二分木を表示する方法。