美文网首页
树结构-1

树结构-1

作者: 杭拼小何 | 来源:发表于2020-08-11 10:56 被阅读0次

1.二叉搜索树、平衡二叉树
2.平衡二叉树之红黑树、
3.B 树、B+树、B* 树、
4.字典树 ( Trie树 )

二叉搜索树(又名二叉排序树)

特点:
1.左子树上的节点均小于根节点
2.右子树上的节点均大于根节点

二叉搜索树

二叉平衡树

为什么要有二叉平衡树,二叉搜索树的结构与值的插入顺序有关,同一组数,若其元素的插入顺序不同,二叉搜索树的结构是千差万别的。举个例子,给出一组数[1,3,5,8,9,13]

若按照[5,1,3,9,13,8]这样的顺序插入,其流程是这样的:

若按照[1,3,5,8,9,13]这样的顺序插入,其流程是这样的:

插入的序列越接近有序,生成的二叉搜索树就越像一个链表。

为了避免二叉搜索树变成“链表”,我们引入了平衡二叉树,即让树的结构看起来尽量“均匀”,左右子树的节点数尽量一样多。

如何生成二叉平衡树

先按照生成二叉搜索树的方法构造二叉树,直至二叉树变得不平衡,即出现这样的节点:左子树与右子树的高度差大于1。至于如何调整,要看插入的导致二叉树不平衡的节点的位置。主要有四种调整方式:LL(左旋)、RR(右旋)、LR(先左旋再右旋)、RL(先右旋再左旋)。

二叉平衡树特点:左子树与右子树的高度差不大于1
时间复杂度:log2n

出现不平衡时到底是执行LL、RR、LR、RL中的哪一种旋转,取决于插入的位置。可以根据值的大小关系来判断插入的位置。插入到不平衡节点的右子树的右子树上,自然是要执行LL旋转;插入到不平衡节点的左子树的左子树上,自然是要执行RR旋转;插入到不平衡节点的左子树的右子树上,自然是要执行LR旋转;插入到不平衡节点的右子树的左子树上,自然是要执行RL旋转。

经典面试算法题——判断一棵树是不是平衡二叉树(递归)
https://leetcode-cn.com/problems/balanced-binary-tree/

java:

class Solution {
  private int height(TreeNode root) {
    if (root == null) {
      return -1;
    }
    return 1 + Math.max(height(root.left), height(root.right));
  }

  public boolean isBalanced(TreeNode root) {
    if (root == null) {
      return true;
    }

    return Math.abs(height(root.left) - height(root.right)) < 2
        && isBalanced(root.left)
        && isBalanced(root.right);
  }
};

相关文章

  • 树结构-1

    1.二叉搜索树、平衡二叉树2.平衡二叉树之红黑树、3.B 树、B+树、B* 树、4.字典树 ( Trie树 ) 二...

  • 03-树结构

    树结构依靠节点、叶子节点、子树将自身的数据扩展为像一棵倒过来的树 1. 什么是树结构 树结构依托路径、节点、叶子节...

  • JS树结构操作

    一、遍历树结构 1. 树结构介绍 JS中树结构一般是类似于这样的结构: 为了更通用,可以用存储了树根节点的列表表示...

  • 四种解析方式

    DOM 解析 : 优点:1形成了树结构,有助于更好的理解、掌握,且代码容易编写 2:解析过程中,树结构保...

  • 详谈树结构(传统树、字典树、hash 树、Merkle Patr

    关于数据结构中树结构的相关分享 本文参考: 树结构参考文献 一、传统的数据结构中的树结构 树结构是一种非线性存储结...

  • JavaScript 数据结构之二叉搜索树

    一、认识树结构 树结构示意图 树结构中的一些术语 树(Tree): n(n>=0) 个节点构成的有限集合 n = ...

  • Element-Ui el-tree 超出部分自动换行

    在使用element-ui 框架做vue 项目树结构时,发现需要固定树结构的宽度,而且树结构的字段有可能会特别长,...

  • MutationObserver 监听DOM树变化

    1 概述 Mutation observer 是用于代替 Mutation events 作为观察DOM树结构发生...

  • MySql_web树结构

    很多网站的分类都是树结构,这里是一个理论上能实现无限级分类的树结构的方法。 创建库表 加入数据 取得树结构:

  • 数据库笔记---ch10树结构索引

    纵观 树结构索引的好处:定位记录的I/O减少,索引树的高度一般就是3,4层树结构中的两种结构1. ISAM结构2...

网友评论

      本文标题:树结构-1

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