pythonpython中二进制搜索树的简单实现(代码片段)

author author     2022-12-29     242

关键词:

class Node:
    def __init__(self, val):
        self.val = val
        self.leftChild = None
        self.rightChild = None
    
    def get(self):
        return self.val
    
    def set(self, val):
        self.val = val
        
    def getChildren(self):
        children = []
        if(self.leftChild != None):
            children.append(self.leftChild)
        if(self.rightChild != None):
            children.append(self.rightChild)
        return children
        
class BST:
    def __init__(self):
        self.root = None

    def setRoot(self, val):
        self.root = Node(val)

    def insert(self, val):
        if(self.root is None):
            self.setRoot(val)
        else:
            self.insertNode(self.root, val)

    def insertNode(self, currentNode, val):
        if(val <= currentNode.val):
            if(currentNode.leftChild):
                self.insertNode(currentNode.leftChild, val)
            else:
                currentNode.leftChild = Node(val)
        elif(val > currentNode.val):
            if(currentNode.rightChild):
                self.insertNode(currentNode.rightChild, val)
            else:
                currentNode.rightChild = Node(val)

    def find(self, val):
        return self.findNode(self.root, val)

    def findNode(self, currentNode, val):
        if(currentNode is None):
            return False
        elif(val == currentNode.val):
            return True
        elif(val < currentNode.val):
            return self.findNode(currentNode.leftChild, val)
        else:
            return self.findNode(currentNode.rightChild, val)

红黑树简单实现(代码片段)

...、红黑树的简单实现一、红黑树的概念红黑树是一种二叉搜索树,树的节点上有一个存储颜色的属性,它的颜色不是黑色就是红色,同时它还具有二叉搜索树的所有性质。1、红黑树的性质树的节点只能是黑色或者红... 查看详情

pythonpython2的简单枚举实现(代码片段)

查看详情

《剑指offer》:[63]二叉搜索树的第k个结点

题目:给定一棵二叉搜索树,请找出其中的第K大的结点。例如在下图中的二叉树,第四个结点就是:5.分析:这个题目比较简单,得到二叉树的第K个值,因为我们知道中序遍历一棵二叉排序树得到的就是有序的序列。所以我... 查看详情

搜索二叉树应用——简单字典实现(代码片段)

搜索二叉树基本概念请看上篇博客这两个问题都是典型的K(key)V(value)问题,我们用KV算法解决。判断一个单词是否拼写正确:假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单词拼写是否正确就是在... 查看详情

avl树的性质及插入实现(代码片段)

...#xff0c;这几个容器有个共同点是:其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N)࿰... 查看详情

实现二分搜索树(代码片段)

二分搜索树具有以下特点:  1二分搜索树是一颗二叉树  2二分搜索树每个节点的左子树的值都小于该节点的值,每个节点右子树的值都大于该节点的值  3任意一个节点的每棵子树都满足二分搜索树的定义基于第二点我们... 查看详情

二叉搜索树的详细实现(c++)(代码片段)

二叉搜索树的概念  从前面讨论折半搜索的性能中可知,如果每次从搜索序列的中间进行搜索,把区间缩小一半,通过有限次迭代,很快就能通近到所要寻找的元素。进一步,如果我们直接输入搜索序列,构造出类似于折半搜... 查看详情

实现递归 Void 函数(查找二叉搜索树的高度)

】实现递归Void函数(查找二叉搜索树的高度)【英文标题】:ImplementingarecursiveVoidfunction(FindingheightofBinarySearchTree)【发布时间】:2020-02-1721:11:33【问题描述】:我需要实现一个void函数来计算二叉树中每个节点的高度并将其存储在... 查看详情

C#中红黑树的实现

...在寻找C#中Red-BlackTree的实现,具有以下功能:在O(logn)中搜索、插入和删除。成员类型应该是通用的。支持Comparer(T),用于按其中的不同字段对T进行排序。在树中搜索应该使用特定的字段,所以它不会接受T,但它会接受对它进行... 查看详情

ztree树的使用

...目中关于ztree插件的使用。实现的功能有:排序、迁移、搜索、删除、右键菜单、重命名、新增。这里是由于项目需要不同人员的权限不同,右键菜单选项不同;如果你也有这种需求,我觉得这里有两种实现方式,一是像这里写... 查看详情

简单字典实现(kv问题)(代码片段)

搜索二叉树基本概念请看上篇博客这两个问题都是典型的K(key)V(value)问题,我们用KV算法解决。判断一个单词是否拼写正确:假设把所有单词都按照搜索树的性质插入到搜索二叉树中,我们判断一个单词拼写是否正确就是在... 查看详情

详解b树(代码片段)

文章目录常见的搜索结构B树概念B树的实现B树的节点设计B树查找结点B树的插入分析B树的简单验证B树整体实现B树的性能分析B+树B*树B树的应用索引MySQL索引简介MyISAMInnoDB常见的搜索结构以上结构适合用于数据量相对不是很大&#... 查看详情

详解b树(代码片段)

文章目录常见的搜索结构B树概念B树的实现B树的节点设计B树查找结点B树的插入分析B树的简单验证B树整体实现B树的性能分析B+树B*树B树的应用索引MySQL索引简介MyISAMInnoDB常见的搜索结构以上结构适合用于数据量相对不是很大&#... 查看详情

问题列表

...(有重复元素、不可重复使用)组合总和III(排列组合、二进制枚举)全排列II子集II搜索旋转排序数组II最小覆盖子串买卖股票的最佳时机拼车(查分数组、优先队列)按权重随机选择分割数组的最大值优势洗牌O(1)时间插入、... 查看详情

pythonpython中简单的小分析装饰器。(代码片段)

查看详情

java235.二进制搜索树的最低共同祖先(第1个).java(代码片段)

查看详情

java235.二进制搜索树的最低共同祖先(第1个).java(代码片段)

查看详情

java235.二进制搜索树的最低共同祖先(第1个).java(代码片段)

查看详情