美文网首页
二叉查找树

二叉查找树

作者: MoonMonsterss | 来源:发表于2018-10-21 19:03 被阅读0次

class Node(object):
   def __init__(self, data):
      self.data = data
      self.left = None
      self.right = None


class SearchTree(object):
   """
   二叉查找树
   """

   def __init__(self):
      self.root = None

   def add(self, node):
      # 如果只传入数据,那么创建Node对象
      if not isinstance(node, Node):
         node = Node(node)

      # 设置根节点
      if self.root is None:
         self.root = node
         return

      item = self.root
      while True:
         # 小于节点数据的,放到节点的左子树上
         if node.data < item.data:
            # 判断是否需要添加节点
            if not item.left:
               item.left = node
               break
            else:
               # 如果节点有左子树,则将指针移动到左子树继续判断
               item = item.left
         # 大于等于节点数据的,放到节点的右子树上
         elif node.data >= item.data:
            if not item.right:
               item.right = node
               break
            else:
               item = item.right

   def preorder(self, root):
      if root:
         print(root.data)
         self.preorder(root.left)
         self.preorder(root.right)

   def inorder(self, root):
      """
      中序遍历的话,会按大小顺序打印
      """
      if root:
         self.inorder(root.left)
         print(root.data)
         self.inorder(root.right)


if __name__ == '__main__':
   st = SearchTree()
   import random

   nums = [random.randint(0, 100) for _ in range(10)]
   print(nums)
   for num in nums:
      st.add(num)
   st.inorder(st.root)

相关文章

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

  • 二叉查找树

    二叉查找树,又称二叉搜索树 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: ...

  • 99-数据结构和算法

    难点:二叉树的遍历 红黑树 图的遍历 二叉查找树二叉查找树(binary search tree),二叉查找树在二...

  • 11-二叉查找树

    二叉查找树 1.什么是二叉查找树? 二叉查找树是一种支持数据动态的插入,删除,查找的数据结构。 2.二叉查找树的设...

  • 17张图带你解析红黑树的原理!保证你能看懂!

    二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Bin...

  • 二叉树 堆 2019-04-17

    二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树...

  • 6. 二叉树创建-查找

    1. 递归方式实现二叉树的构建2. 树、二叉树、二叉查找树3. 二叉树排序树的理解4. 二叉查找树5. 二叉树的查找

  • 数据结构中的各种树

    一、二叉树 二、二叉查找树(又称二叉排序树,二叉搜索树) 二叉查找树(Binary Search Tree)它或者...

网友评论

      本文标题:二叉查找树

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