伪代码如下:
INORDER-TREE-WALK(x)
y = x
print x.key
x = x.left
while y != NIL
y = y.right
while y != x
while x != NIL
print x.key
x = x.left
while x.right == NIL
x = x.p
x = x.right
print y.key
基本思路:
如上图所示,节点的遍历顺序为:a-b-d-b-e-b-a-c-f-g-i-g-j-g-f-h
可以知道:n0的遍历次数为1,n1的遍历次数为2,n2的遍历次数为3(其中n0为度为0的节点,n1为度为1的节点,n2为度为2的节点)。
因此该方法的遍历次数为:A = n0 + 2 * n1 + 3 * n2(1)
我们知道:n0 = n2 + 1(2)
结合公式1和2我们可以得到:A = 4 * n2 + 2 * n1 + 1
所以当n2值越小是,这个遍历方法的效率越高