当前位置:首页python > 正文

Python 数据结构:二叉搜索树(BST)查找操作

作者:野牛程序员:2025-12-22 11:09:56python阅读 2023
Python 数据结构:二叉搜索树(BST)查找操作
# /*
# Python 数据结构:二叉搜索树(BST)查找操作
# --------------------------------------------------------
# 概念:
# BST 查找操作利用二叉搜索树的有序性:
# 1) 从根节点开始比较
# 2) 目标值 < 根节点 → 进入左子树
# 3) 目标值 > 根节点 → 进入右子树
# 4) 目标值 == 根节点 → 找到
# 5) 递归或迭代方式实现
# */

# ========================================================
# BST 节点定义
# ========================================================
class BSTNode:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

# ========================================================
# BST 操作类(插入 + 查找)
# ========================================================
class BST:
    def __init__(self):
        self.root = None

    # 插入新节点
    def insert(self, data):
        self.root = self._insert_recursive(self.root, data)

    def _insert_recursive(self, node, data):
        if node is None:
            return BSTNode(data)
        if data < node.data:
            node.left = self._insert_recursive(node.left, data)
        elif data > node.data:
            node.right = self._insert_recursive(node.right, data)
        return node

    # 查找节点(返回 True / False)
    def search(self, target):
        return self._search_recursive(self.root, target)

    def _search_recursive(self, node, target):
        if node is None:
            return False
        if target == node.data:
            return True
        elif target < node.data:
            return self._search_recursive(node.left, target)
        else:
            return self._search_recursive(node.right, target)

# ========================================================
# 示例演示
# ========================================================
bst = BST()
for value in [50, 30, 70, 20, 40, 60, 80]:
    bst.insert(value)

search_values = [40, 25, 80, 90]
for val in search_values:
    found = bst.search(val)
    print(f"查找 {val} -> {'找到' if found else '未找到'}")

# ========================================================
# 要点总结:
# --------------------------------------------------------
# 1) BST 查找利用左 < 根 < 右 的有序性快速定位;
# 2) 时间复杂度平均为 O(log n),最坏为 O(n)(退化为链表);
# 3) 可递归或迭代实现;
# 4) 查找操作返回节点存在与否或节点本身;
# 5) 查找前可确保 BST 已正确构建。
# */

# 查找 40 -> 找到
# 查找 25 -> 未找到
# 查找 80 -> 找到
# 查找 90 -> 未找到


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 数据结构:二叉搜索树(BST)查找操作
  • 相关推荐

    最新推荐

    热门点击