python二叉搜索树建立_python中二叉搜索树的详细介绍(代码示例)

本篇文章给大家带来的内容是关于python中二叉搜索树的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、二叉搜索树

**二叉搜索树(BST binary search

tree)**是一种比较特殊的二叉树,表现为任意节点的值都比左孩子的值要大,而且小于等于右孩子的值,采用中序遍历BST(Binary

Search Tree)就可以的到排序好的元素集合,而且插入删除的时间消耗也比较合理,但是有一个缺点就是内存开销有点大。

二叉搜索树的性质

1,任意节点x,其左子树中的key不大于x.key,其右子树中的key不小于x.key。

2,不同的二叉搜索树可以代表同一组值的集合。

3,二叉搜索树的基本操作和树的高度成正比,所以如果是一棵完全二叉树的话最坏运行时间为Θ(lgn),但是若是一个n个节点连接成的线性树,那么最坏运行时间是Θ(n)。

4,根节点是唯一一个parent指针指向NIL节点的节点。

5,每一个节点至少包括key、left、right与parent四个属性,构建二叉搜索树时,必须存在针对key的比较算法。

二、二叉搜索树的实现

1. 定义

树的节点:class TreeNode:

def __init__(self,key,val,left=None,right=None,parent=None):

self.key = key

self.payload = val

self.leftChild = left

self.rightChild = right

self.parent = parent

class BinarySearchTree:

def __init__(self):

self.root = None

self.size = 0

2.插入

现在我们有了 BinarySearchTree shell 和 TreeNode,现在是时候编写 put 方法,这将允许我们构建二叉搜索树。 put 方法是BinarySearchTree 类的一个方法。此方法将检查树是否已具有根。如果没有根,那么 put 将创建一个新的 TreeNode 并将其做为树的根。如果根节点已经就位,则 put 调用私有递归辅助函数 _put 根据以下算法搜索树:从树的根开始,搜索二叉树,将新键与当前节点中的键进行比较。如果新键小于当前节点,则搜索左子树。如果新键大于当前节点,则搜索右子树。

当没有左(或右)孩子要搜索时,我们在树中找到应该建立新节点的位置。

要向树中添加节点,请创建一个新的 TreeNode对象,并将对象插入到上一步发现的节点。

插入时,总是作为叶节点插入到树中

给定序列去依次构造二叉查找树,则二叉搜索树唯一;如果是用这个序列所有的关键字去构造可能的二叉树(排列任意),则一般不唯一。def put(self,key,val):

if self.root:

self._put(key,val,self.root)

else:

self.root = TreeNode(key,val)

self.size = self.size + 1

def _put(self,key,val,currentNode):

if key < currentNode.key:

if currentNode.hasLeftChild():

self._put(key,val,currentNode.leftChild)

else:

currentNode.leftC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值