关于罗伯特塞奇威克(Robert Sedgewick)的树木方向

时间:2014-05-10 11:44:15

标签: algorithm binary-search-tree

我正在读罗伯特塞奇威克关于施展树木的事。以下是

部分的文字摘要

在根插入方法中,我们完成了主要目标,即使用左右旋转将新插入的节点带到树的根。在本节中,我们将研究如何修改根插入,以便旋转在某种意义上平衡树。

不是考虑(递归地)将新插入的节点带到树顶部的单个旋转,而是考虑两个旋转将节点从一个位置作为根的孙子之一直到顶部那个树。首先,我们执行一次旋转以使节点成为根的子节点。然后,我们执行另一次旋转以将其带到根目录。有两种基本上不同的情况,取决于从根到被插入的节点的两个链接是否以相同的方式定向。 。 Splay BST基于这样的观察:当从根到被插入的节点的链接以相同的方式定向时,有另一种方法可以继续:简单地在根处执行两次旋转。

附加信息显示在幻灯片4的以下链接

http://www.cs.princeton.edu/courses/archive/spr04/cos226/lectures/balanced.4up.pdf

我的问题是

  1. 作者在这里的定位是什么意思?

  2. 请求给出一个不同的方位和方向匹配的例子。

  3. 由于

2 个答案:

答案 0 :(得分:0)

方向仅仅意味着左或右孩子。

  A
 / \
B   C
   / \
  D   E

E是相同方向情况的一个例子 - C是A的右子,E又是C的右子.D是不同方向的一个例子,因为D是C的左子,但C是右A的孩子。

因此,您可以按如下方式描述所有节点相对于根节点A的方向。

B left
C right
D right left
E right right

答案 1 :(得分:0)

假设您正在访问其父级为n且其祖父母为p的节点g。如果np都是其父级的左子或右子,则方向相同。

因此,例如,如果pg的正确孩子而np的左子,则方向不同。如果pg的正确孩子且np的正确孩子,则方向相同。