设二叉排序树以二叉链表形式存放,用类C语言设计非递归算法从大到小输出一棵根结点为T的二叉树所有不小于k的数据元素。

设二叉排序树以二叉链表形式存放,用类C语言设计非递归算法从大到小输出一棵根结点为T的二叉树所有不小于k的数据元素。

还是利用栈,类似于二叉树中序遍历的非递归算法,但是要先访问右孩子(根据二叉排序树的定义),因为要求是从大到小。

算法如下:

void OutputTree(BiTree T)
{
	BiTree p;
	InitStack(S);
	p=T;
	while(p||!StackEmpty(S))
	{
		if(p)
		{
			Push(S,p);
			p=p->rchild;
		}
		else
		{
			Pop(S,p);
			if(p->data>=k)
				printf(p->data);
			p=p->lchild;
		}
	}
}

你可能感兴趣的:(作业习题)