通俗易懂的二叉树左旋
/** |
* x
* / \
* a y
* / \
* b c
* 左旋 y到x位置 x称为y的左儿子 r还是y的右儿子 b成了b的右儿子
*
* y = x.right
* x.right = y.left
* |
* x
* /
* a
* 这时候状态
* y
* / \
* c d
* if y.left != T.nil //即y的右儿子不为空
* y.left.p = x //设置b的父亲为x
*
* |
* x
* /|
* a |
* 这时候状态 |
* | y
* | \
* c d
* y.p = x.p
*
* | \
* | \
* | \
* x \
* /| \
* a | \
* 这时候状态 | \
* | y
* | \
* c d
* 虽然y指向了x的父节点但是x还没有改变父亲
*
* if x.p == T.nil //如果x是根节点
* T.root = y
* elseif x == x.p.left //如果x比x的父节点要小
* x.p.left = y //就把y放在左边
*
* /
* /
* p
* /
* /
* y
* / \
* / \
* \
* \ d
* \
* \
* \
* |
* x
* /|
* a |
* |
* |
* |
* c
*
*
* else x.p.right=y //如果x在父节点右边 比父节点要打
* y.left = x
* x.p = y
*
* 如果x在父节点右边
* p
* \
* \
* y
* | \
* | \
* | \
* | \
* x \
* /| \
* a | \
* | \
* | \
* | \
* c d
*
*/
博客围绕数据结构展开,涉及左旋相关内容,但具体细节因内容缺失暂不明确。数据结构是信息技术领域重要基础,左旋操作在其中有特定应用和意义。
810

被折叠的 条评论
为什么被折叠?



