二叉查找树(binary search tree)——python实现

本文介绍了二叉查找树的概念,包括如何进行遍历、插入、删除操作,以及计算树的高度、节点数,查找特定节点,找到树中的最大和最小关键字节点等。所有操作均以Python语言实现。
摘要由CSDN通过智能技术生成

二叉查找树(binary search tree)

顾名思义二叉查找树中每个节点至多有两个子节点,并且还对存储于每个节点中的关键字值有个小小的要求,
即只要这个节点有左节点或右节点,那么其关键字值总的 大于其左节点的关键字值, 小于其右节点的关键字值,如下图:

因为树的结构特性,很适合使用递归的方式去操作,下面的实现中均是以递归的方式实现:

下面仅给出了python的实现,一是因为代码太长,二是python的实现是我对着C语言实现改过来的,基本没什么差别;
主要实现的方法有:
  • 遍历:
前序:preorder()——理根节点→处理左子树→处理右子树
中序:inorder()——处理左子树→处理根节点→处理右子树
后序:postorder()——处理左子树→处理右子树→处理根节点

  • 插入:

insert(key)——将关键字值为key的节点插入到适当的位置(注释里面的是非递归实现)

  • 删除:

delete(key)——将关键字值为key的节点从树中删掉(注释中给了说明)

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值