数据结构:二叉树,AVL树和优先级队列:AVL树

AVL树

AVL树是二元搜索树,遵循每个节点的平衡条件。

  • 平衡条件约束每个节点的子树高度相差不超过1。

AVL trees are binary search trees that obey a balance condition at each node.

  • The balance condition constrains the height of the subtrees at each node to differ by no more than 1.

二叉树的高度

  • 二叉树的高度是从根到叶的最长路径的长度。

  • 具有一个节点的二叉树的高度为0。

  • 按照惯例,空二进制树的高度为-1。

Height of Binary Trees

  • The height of a binary tree is the length of the longest path from the root to a leaf.

  • A binary tree with one node has height 0.

  • An empty binary tree is has height -1 by convention.

AVL树的例子(Examples of AVL Trees)

非AVL树(A non-AVL Tree)

Root 7: Height: 0

Root 20: Height: 2

建立AVL树(Building AVL Trees)

  • AVL树是通过从空的二叉树开始并一次添加一个元素来构建的。

  • 对任何二叉搜索树进行添加,然后执行操作以恢复AVL平衡条件。

  • AVL trees are built by starting with an empty binary tree and adding elements one at time.

  • Additions are made as to any binary search tree, then an operation is executed to restore the AVL balance condition.

  • 为了平衡自身,AVL树可以执行以下四种旋转

    • 左旋转

    • 右旋

    • 左右旋转(双旋转)

    •  左右旋转(双旋转)

  • To balance itself, an AVL tree may perform the following four kinds of rotations

    • Left rotation

    • Right rotation

    • Left-Right rotation (Double Rotation) 

    • Right-Left rotation (Double Rotation)

LL不平衡

  • 当N和N的左子节点K都是左重时,LL不平衡在节点N处发生。

LL imbalance

  • An LL imbalance occurs at a node N with a left child K when N and K are both left-heavy.

  • 如果节点的左子树具有比其右子树更高的高度,则节点是左重的。

  • 通过在具有不平衡的节点处执行单个右旋转来校正LL不平衡

  • A node is left-heavy if its left subtree has greater height then its right subtree.

  • An LL imbalance is corrected by executing a single right rotation at the node with the imbalance

纠正LL不平衡(Correcting LL Imbalances)

RR不平衡

•当N和M都是右重时,在具有右子M的节点N处发生RR不平衡。

•RR不平衡是LL不平衡的镜像。

RR Imbalance

• An RR imbalance occurs at a node N with a right child M when N and M are both right-heavy.

• An RR imbalance is the mirror image of an LL imbalance.

纠正RR不平衡

•通过在具有不平衡的节点处执行单个左旋转来校正RR不平衡。

Correcting RR Imbalances

• An RR imbalance is corrected by executing a single left rotation at the node with the imbalance.

LR不平衡

  • 当N为左重且K为右重时,LR不平衡发生在具有左子K的节点N处。

LR imbalance

  • An LR imbalance occurs at a node N with a left child K when N is left-heavy and K is right- heavy.

纠正LR不平衡

  • 通过在具有不平衡的节点处执行双LR旋转来校正LR不平衡。

Correcting An LR Imbalance

  • An LR imbalance is corrected by executing a double LR rotation at the node with the imbalance.

 

 

 

•通过在具有不平衡的节点处执行双LR旋转来校正LR不平衡。

• An LR imbalance is corrected by executing a double LR rotation at the node with the imbalance.

RL不平衡(RL imbalance)

•当N为右重且K为左重时,在具有右子K的节点N处发生RL不平衡。

• An RL imbalance occurs at a node N with a right child K when N is right-heavy and K is left- heavy.

纠正RL不平衡•左右旋转

Correcting RL imbalance • Right-Left Rotation

 

发布了32 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_27467365/article/details/84496703