美文网首页
二叉树平衡

二叉树平衡

作者: Bardon_X | 来源:发表于2020-03-26 13:13 被阅读0次

    首先定义下二叉树,每个节点都有两个子节点,称之为左节点和右节点,这样的数据结构称为二叉树;

    再往上升级,什么是排序二叉树,即每个节点的根节点都大于左节点,每个根节点都小于右节点,这样的结构称之为二叉排序树;

    再往上升级,什么是平衡二叉树,即每个根节点的左子树高度与右子树的高度最多相差为1,称为平衡二叉树。

    平衡二叉树具有最佳搜索特性,论证如下:

    加入树的高度是N,最多节点数为 2的N次方 -1;最少节点数为 2的(N-1)次方 -1 + 1 ,故为[2的N-1次方, 2的N次方],检索2的N次方-1个数据,最多需要减N次;假设N=32,可检索21亿数据至42亿数据,32次比较就可检索到。10亿~21亿数据量级则需要最多检索31次。

    二叉树很简单,但满足平衡二叉树就稍微复杂。

    由排序二叉树调整成平衡二叉树可归纳为四种情况:LL,RR,LR,RL;即节点加在右子树的右子节点上,左子树的左子节点上,左子树的右子节点上,右子树的左子节点的;分别对应不同的自旋方式

    1、LL旋转,右子树的右子节点上

LL旋转

    2、RR旋转,左子树的左子节点上

RR旋转

    3、RL旋转,右子树的左子节点上(先对右子树进行右旋转,再对根节点进行左旋转)

RL旋转

    4、LR旋转,左子树的右子节点上(先对左子树进行左旋转,再对根节点进行右旋转)

LR旋转

理解巧记法:

    1、对于RR自旋 和 LL自旋,适用场景是 左节点的左子节点 和 右节点的右子节点;往左左侧加,导致左侧偏“重”,根节点向右旋转,往右右侧加,导致右侧偏“重”,根节点向左旋转

    2、对于LR自选 和 RL自旋,适用场景是 左节点的右节点 和 右节点的左节点;left/right顺序是一致的;往左节点右子节点加,,左节点右侧偏“重”,对左节点左旋,达到平衡,对根节点而言先往左侧加,导致左侧偏重,根节点向右侧自旋;

相关文章

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 平衡二叉树

    1)什么是平衡二叉树?2)平衡二叉树的特点是什么?3)平衡二叉树的构建实现? 一、什么是平衡二叉树?假设有一组数据...

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

  • Leetcode 110 平衡二叉树

    平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每...

  • 二叉树2-平衡二叉树、完全二叉树、二叉树剪枝

    110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 一棵高度平衡二叉树定义为:一个二叉树每个节点 ...

  • Leetcode题解 - Easy - 4

    110- 平衡二叉树 问题 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一...

  • TreeMap源码分析

    TreeMap 平衡二叉树 平衡二叉树(Self-balancing binary search tree)又被称...

  • 图的应用[平衡二叉树以及散列查找]

    平衡⼆二叉树( AVL 树) 平衡⼆二叉树(Self-Balancing Binary Search Tree 或...

  • [LeetCode]110. 平衡二叉树

    110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个...

  • 力扣算法 - 平衡二叉树

    平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的...

网友评论

      本文标题:二叉树平衡

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