Python中的树形数据结构: 三叉搜索树
三叉搜索树是一种数据结构,它使每个节点可以有三个子节点:左子节点,右子节点和中子节点。它是一种特殊的二叉搜索树,其中每个节点有两个关键字:一个是节点值,另一个是中间节点的值。它的左子树只包含比中间节点小的值,右子树只包含比中间节点大的值。
下面是Python中实现三叉搜索树的代码演示:
# 定义节点类 class Node: def __init__(self, value=None): self.value = value self.left = None self.middle = None self.right = None # 定义三叉搜索树类 class TernarySearchTree: def __init__(self): self.root = None # 插入节点 def insert(self, value): if self.root is None: self.root = Node(value) else: self._insert(value, self.root) def _insert(self, value, node): if value < node.value: if node.left is None: node.left = Node(value) else: self._insert(value, node.left) elif value > node.value: if node.right is None: node.right = Node(value) else: self._insert(value, node.right) else: if node.middle is None: node.middle = Node(value) else: self._insert(value, node.middle) # 查找节点 def search(self, value): return self._search(value, self.root) def _search(self, value, node): if node is None: return False elif value == node.value: return True elif value < node.value: return self._search(value, node.left) elif value > node.value: return self._search(value, node.right) else: return self._search(value, node.middle) # 创建一个三叉搜索树对象 tree = TernarySearchTree() # 插入一些节点 tree.insert("p") tree.insert("i") tree.insert("d") tree.insert("a") tree.insert("n") tree.insert("c") tree.insert("o") tree.insert("d") tree.insert("e") tree.insert(".") # 查找节点 print(tree.search("p")) # True print(tree.search("id")) # False print(tree.search(".")) # True
在上面的代码演示中,我们首先定义了一个Node
类来表示节点对象,并在其中定义了节点的值,左子节点,中子节点和右子节点。然后,我们定义了一个TernarySearchTree
类来表示三叉搜索树,并在其中定义了插入和查找节点的函数。最后,我们创建一个三叉搜索树对象,并向其插入一些节点,然后查找这些节点。
相关文章