二叉树层次遍历

可以通过求第K层的结点,但是反复递归时间复杂度很高

可以通过队列来实现

void LevelTraverse(BiTNode * pRoot)  
{  
	if(pRoot == NULL)  
		return;  
	queue<BiTNode *> q;  
	q.push(pRoot);  
	while(!q.empty())  
	{  
		BiTNode * pNode = q.front();  
		q.pop();  
		cout<<pNode->data << endl; // 访问节点   
		if(pNode->lchild != NULL)  
			q.push(pNode->lchild);  
		if(pNode->rchild != NULL)  
			q.push(pNode->rchild);  
	}  
	return;  
}

 

posted @ 2013-08-27 23:59  l851654152  阅读(240)  评论(0编辑  收藏  举报