Python 数据结构与算法——二叉搜索树的实现
2016-03-23 12:58
627 查看
class Tree:本身自然需要维护根节点(root),用于指向树的第一个节点
class Node:每一个节点都要维护左子树、右子树
一棵二叉搜索树最为重要的两个使命是:插入和搜索,插入最终返回的是当前节点。
class Tree: root = None
class Node:每一个节点都要维护左子树、右子树
class Node: lft = None rgt = None
一棵二叉搜索树最为重要的两个使命是:插入和搜索,插入最终返回的是当前节点。
class Node: lft = None rgt = None
def __init__(self, key, val):
self.key = key
self.val = val
def insert(node, key, value):
# 返回插入后的节点
if node: return new Node(key, value)
if node.key < key:
return insert(node.rgt, key, value)
return insert(node.lft, key, value)
def search(node, key):
if node is None: raise KeyError
if node.key == key:
return node.val
if node.key < key:
return search(node.rgt, key)
return search(node.lft, key)
class Tree: root = None
def __getitem__(self, key):
return search(self.root, key)
def __setitem__(self, key, value):
insert(self.root, key, value)
def __contains__(self, key):
try:
search(self.root, key)
return True
except KeyError:
return False
相关文章推荐
- 二叉树的先序、中序、后序遍历
- 数据结构实验1-3
- 数据结构实验1-2
- MySQL索引背后的数据结构及算法原理
- Python 数据结构与算法——快排
- 双链表按访问频度域freq的值的递减序排列
- 将双链表中值为x的节点置为首节点
- 单链表的基本运算
- 顺序表的基本运算
- Python 数据结构与算法——选取算法(TopK)
- 数据结构8-排序1
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比
- 数据结构---线性表----单链表结构与顺序存储结构的对比