BST
BinTreeを使ってそーと。quicksortを逆にやっているのと同じになるらしい。面白い。
やってみる in python
class Node(object): def __init__(self, value, left=None, right=None): self.value = value self.left = left self.right = right class binarytree(object): def __init__(self): self.root = None def _insert_inner(self, node, value): if node is None: return Node(value) elif node.value == value: return node elif node.value > value: node.left = self._insert_inner(node.left, value) else: node.right = self._insert_inner(node.right, value) return node def insert(self, value): self.root = self._insert_inner(self.root, value) def _traverse_inner(self, node, ret): if node is None: return ret self._traverse_inner(node.left, ret) ret.append(node.value) self._traverse_inner(node.right, ret) return ret def traverse(self): return self._traverse_inner(self.root, []) if __name__ == "__main__": n = binarytree() for x in [3,1,8,2,6,7,5]: n.insert(x) print n.traverse()
sikibu:~ kuro$ python tree.py [1, 2, 3, 5, 6, 7, 8]
追記:
traverseのとこ、print はだせぇと言われたので、変更した。