Python中的树形数据结构: 三叉搜索树

2023-04-11 00:00:00 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类来表示三叉搜索树,并在其中定义了插入和查找节点的函数。最后,我们创建一个三叉搜索树对象,并向其插入一些节点,然后查找这些节点。

相关文章