当前位置:   article > 正文

自平衡二叉树实现及时间复杂度分析

平衡二叉树查找的时间复杂度

平衡二叉树的实现

我们在遍历二叉树时,先一直往左遍历,于是我们发现,当一棵树的每个节点都只有一个子节点时,他就变成了一个链表,然后链表就说啊:

年轻人你不要过度消费我,这好吗?这不好。

所以我们针对这个问题进行优化,就出现了「平衡二叉树」

何为平衡,平衡是指,二叉树中任意节点的左右子树的高度差都不大于1。当插入或删除一个节点时,我们需要通过一次或多次树的「旋转」来保持二叉树的平衡。

树的旋转分为「左旋」「右旋」两种具体操作,这两种操作是完全相反的,互为逆操作。

左旋是「将该节点的右子树逆时针旋转」,右旋是「将该节点的左子树顺时针旋转」

对于一个节点node进行左旋操作时,具体操作为:「将node.right子树取下,node.right节点称为新的根节点newRoot,将node接在newRoot的左节点,newRoot.left取下接在node的右节点上。」

右旋操作相反:「将node.left子树取下,node.left节点作为新的根节点newRoot,将node接在newRoot的右节点,newRoot.right取下接在node的左节点上。」

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/681200
推荐阅读
相关标签
  

闽ICP备14008679号