Python实现二叉查找树:定义、递归操作与完整代码解析

Chloe
Chloe
发布时间:2026-10-13| 3人浏览过
原创

本文详细解析Python中二叉查找树的实现原理。涵盖BST定义、最值查找逻辑,重点讲解基于递归的插入、查询及复杂删除操作(含后继节点处理)。附带完整TreeNode类定义与测试代码,帮助开发者掌握核心数据结构实现。

本文主要探讨如何利用Python语言实现二叉查找树,并提供了具体的原理介绍与代码实现方案。

1. 二叉查找树的基本定义:

若左子树非空,则其所有节点的值均小于根节点的值;若右子树非空,则其所有节点的值均大于根节点的值。此外,左右子树本身也必须分别满足二叉查找树的性质。

2. 最值查找与节点删除逻辑:二叉查找树中最左侧的节点即为最小值,只需沿左子树不断遍历至空节点即可找到;同理,最右侧节点为最大值,沿右子树遍历至空节点即可。插入、查找及删除操作均通过递归方式实现。在删除节点S时,若其左右子树均非空,则并非直接删除S,而是找到其右子树中的后继节点,将后继节点的值赋给S,随后删除该后继节点;若S的左子树或右子树为空,则可直接删除S节点。

3. 二叉查找树的Python代码实现:

class TreeNode: 
  def __init__(self,val): 
    self.val=val; 
    self.left=None; 
    self.right=None; 
def insert(root,val): 
  if root is None: 
    root=TreeNode(val); 
  else: 
    if val<root.val: 
      root.left=insert(root.left,val);  #递归地插入元素 
    elif val>root.val: 
      root.right=insert(root.right,val);  
  return root; 
 
def query(root,val): 
  if root is None: 
    return ; 
  if root.val is val: 
    return 1; 
  if root.val <val: 
    return query(root.right,val); #递归地查询 
  else:  
    return query(root.left,val); 
def findmin(root): 
  if root.left: 
    return findmin(root.left); 
  else: 
    return root; 
   
def delnum(root,val): 
  if root is None: 
    return ; 
  if val<root.val: 
    return delnum(root.left,val); 
  elif val>root.val: 
    return delnum(root.right,val); 
  else:                       # 删除要区分左右孩子是否为空的情况 
    if(root.left and root.right): 
       
      tmp=finmin(root.right);       #找到后继结点 
      root.val=tmp.val; 
      root.right=delnum(root.right,val);  #实际删除的是这个后继结点 
       
    else: 
      if root.left is None: 
        root=root.right; 
      elif root.right is None: 
        root=root.left; 
  return root; 
         
         
#测试代码       
root=TreeNode(3); 
root=insert(root,2); 
root=insert(root,1); 
root=insert(root,4); 
 
#print query(root,3); 
print query(root,1); 
root=delnum(root,1); 
print query(root,1); 

运行结果如下:

1 None >>>

总结

以上即为Python实现二叉查找树的完整实例代码,希望能对读者有所帮助。欢迎感兴趣的朋友继续查阅本站其他相关专题内容,如有疏漏之处,敬请留言指正。感谢各位对本站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。