您的位置:首页 > 其它

用非递归的方法遍历二叉树

2013-02-25 20:05 274 查看
void treenumber(treelink *t)                 //按序号遍历二叉树
{
	queuelink *q = queuecreate();          //创建一个队列
	queuedata temp;

	printf("%d ", t->data);                       //打印根节点数据
	queueenter(q, t);                               //先将根节点入队

	while(queueempty(q) == 0)             //第一次因为根节点入队,队肯定不为空
	{
		temp = queuedelete(q);               //出队,将“根”出队

		if(temp->data*2 <= N)                 //判断temp是否存在左子树,如果条件成立,则存在左子树
		{
			printf("%d ", temp->lchild->data);            //打印左子树     
			queueenter(q, temp->lchild);                     //将左子树入队
		}

		if(temp->data*2+1 <= N)            //判断temp是否存在右子树,如果条件成立,则存在右子树
		{
			printf("%d ", temp->rchild->data);       //打印右子树  
			queueenter(q, temp->rchild);                //将右子树入队
		} 
	}
	printf("\n");
}




版权所有:华清远见讲师牛利兵
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: