Data structures 手动平衡BST树

Data structures 手动平衡BST树,data-structures,binary-tree,tree-balancing,Data Structures,Binary Tree,Tree Balancing,我已经手工完成了树的平衡(bst>avl),我想知道这真的很容易,所以我不确定我是否正确地完成了 a / \ b e3 / \ e1 e2 A. / \ b e3 / \ e1 e2 初始状态为: “a”是“b”(左)和“e3”(右)的父级,“b”是“e1”(左)和“e2”(右)的父级 应用右旋转可以使我们: b / \ e1 a / \ e2 e3 B / \ e1 a / \ e2

我已经手工完成了树的平衡(bst>avl),我想知道这真的很容易,所以我不确定我是否正确地完成了

a / \ b e3 / \ e1 e2 A. / \ b e3 / \ e1 e2 初始状态为: “a”是“b”(左)和“e3”(右)的父级,“b”是“e1”(左)和“e2”(右)的父级

应用右旋转可以使我们:

b / \ e1 a / \ e2 e3 B / \ e1 a / \ e2 e3 “b”代替“a”,左边是子项“e1”,右边是子项“a”,左边是“b”的“e2”

因此,问题是:

  • 如果e1本身是包含其他元素的子树或节点,我仍然可以执行此旋转吗
  • 二,。如果e2和e3不存在,我还可以进行此轮换吗
  • 例11;12;十六,

    16 / 13 / 10 16 / 13 / 10 初始状态:16是13的父母,13是10的父母。 我可以这样做吗:13是10(左)和16(右)的父母

    我知道这太简单了,但理论往往不能涵盖这些事情,假设它是明确的,当然不是每个人都能做到。
    谢谢你的帮助,

    是的,真的。考虑order属性:左子体<节点,节点<右子体。注意旋转是如何保持这一点的;旋转前将a和b与e1、e2和e3进行比较,并检查旋转后的顺序和后代关系。我会让你先考虑一下,然后再把它送人