zoukankan      html  css  js  c++  java
  • 二叉树

    二叉树

    介绍

    binary search tree,中文翻译为二叉搜索树、二叉查找树或者二叉排序树。简称为BST

    定义

    • 所有非叶子结点至多拥有两个儿子(Left和Right)
    • 所有结点存储一个关键字
    • 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树

    如:

    搜索元素过程

    B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中,否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;

    与数组对比

    如果B树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么B树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变B树结构(插入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销;如下分别是二叉树和数组插入元素的过程:

    平衡二叉树

    但B树在经过多次插入与删除后,有可能导致不同的结构:

    右边也是一个B树,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致不同的树结构索引;所以,使用B树还要考虑尽可能让B树保持左图的结构,和避免右图的结构,也就是所谓的“平衡”问题;实际使用的B树都是在原B树的基础上加上平衡算法,即“平衡二叉树”;如何保持B树结点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在B树中插入和删除结点的策略;

  • 相关阅读:
    Leetcode 50.Pow(x,n) By Python
    Leetcode 347.前K个高频元素 By Python
    Leetcode 414.Fizz Buzz By Python
    Leetcode 237.删除链表中的节点 By Python
    Leetcode 20.有效的括号 By Python
    Leetcode 70.爬楼梯 By Python
    Leetcode 190.颠倒二进制位 By Python
    团体程序设计天梯赛 L1-034. 点赞
    Wannafly挑战赛9 C-列一列
    TZOJ Start
  • 原文地址:https://www.cnblogs.com/tqlin/p/10537546.html
Copyright © 2011-2022 走看看