一种二叉树遍历方法

伪代码如下:

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值越小是,这个遍历方法的效率越高

       

猜你喜欢

转载自blog.csdn.net/wolf_tong/article/details/78004846