美文网首页Python学习日志《python算法基础》读书笔记
《python算法教程》Day8 - 构建二分搜索树

《python算法教程》Day8 - 构建二分搜索树

作者: billyang916 | 来源:发表于2018-04-19 00:55 被阅读10次

今天是《python算法教程》的第8篇读书笔记,笔记的主要内容是构建二分搜索树。

二分搜索树介绍

若要对一组有序值中执行操作(如查找),二分搜索法是一个优秀的选择,因为其时间复杂度仅为对数级。但很多时候,对序列的操作不仅仅是查找,还涉及到插入新数据。若此时选用数组作为存储数据的结构,插入数据的时间复度是线性级的,显然无法满足快速插入数据的需求。因此,这里引入二分搜索树这一既能利于二分搜索又能以对数级的时间完成搜索的数据结构。

二分搜索树创建代码

二分搜索树是一个对象,其提供插入、搜索节点和判断是否存在某个节点的方法。

#构建二分搜索树

#二分搜索树的节点的自定义类
class Node:
    lft=None
    rgt=None
    def __init__(self,key,val):
        self.key=key
        self.val=val

#定义插入节点的函数
def insert(node,key,val):
    if node is None :
        return Node(key,val)
    #如插入的节点的键与已存在的键相同,则更新节点的值
    if node.key==key:
        node.val=val
    elif key<node.key:
        insert(node.lft,key.val)
    else:
        insert(node.rgt,key,val)
    return node

#从指定节点开始搜索节点
def search(node,key):
    if node is None:
        raise KeyError
    if node.key==key:
        return node.val
    if key<node.key:
        return search(node.lft,key)
    else:
        return search(node.rgt,key)

#定义二分搜索树类
class tree:
    root=None
    #
    def __setitem__(self,key,val):
        self.root=insert(self.root,key,val)
    def __getitem__(self,key):
        return search(self.root,key)
    def __contians__(self,key):
        try:
            search(self.root,key)
        except KeyError:
            return False
        return True

t=tree()
t['root']=10

相关文章

  • 《python算法教程》Day8 - 构建二分搜索树

    今天是《python算法教程》的第8篇读书笔记,笔记的主要内容是构建二分搜索树。 二分搜索树介绍 若要对一组有序值...

  • 算法-二分搜索算法

    算法:二分搜索算法(折半查找算法)时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算...

  • 二分算法-LeetCode 69

    二分算法-LeetCode 69 二分算法 二分算法模板, 二分搜索即搜索一个数,如果存在,返回其索引,否则返回-...

  • Swift 算法实战二(二叉树、二分搜索)

    Swift 算法实战一(集合,字典,链表,栈,队列等算法) Swift 算法实战二(二叉树、二分搜索) 前言 这是...

  • Swift 算法实战一(集合,字典,链表,栈,队列等算法)

    Swift 算法实战一(集合,字典,链表,栈,队列等算法) Swift 算法实战二(二叉树、二分搜索) 前言 用 ...

  • python二分搜索树

    利用python实现了二分搜索树等一系列操作,对递归有了更深入的了解C++可以直接对内存进行操作,删除节点的代码会...

  • AVL 树

    一:什么是 AVL 树? 在我的上一篇文章《二分搜索树与二分查找法》中,详细介绍了二分搜索树这种数据结构。二分搜索...

  • 第四讲-树(中)

    树(中) 二叉搜索(排序/查找)树 作用:为了进行二分查找,将数据构建在查找树中,相比与线性结构树的插入删除等动态...

  • 算法 | 遍历二分搜索树

    又是来自我的好朋友 EvilSay 的投稿,以下是原文: 1、基本定义 二分搜索树的每个子节点最多有两个叶子节点 ...

  • 二叉树的插入和搜索--python实现

    本文首先介绍了二分查找法,采用“循环”和“递归”2种方法实现。采用递归算法实现了二叉树的插入和搜索算法。 一、二分...

网友评论

    本文标题:《python算法教程》Day8 - 构建二分搜索树

    本文链接:https://www.haomeiwen.com/subject/ivcikftx.html