您的位置:首页 > 其它

6、怎样从顶部开始逐层打印二叉树

2012-09-05 16:25 176 查看
/************************************************************************/
/* 6、怎样从顶部开始逐层打印二叉树                                               */
/************************************************************************/
//使用队列,队列中为未扩展元素,队列中最多存放两层元素
//层次遍历并放回树的高度
int levelTravese(BinaryNode* root)
{
if(!root)
return 0;
queue<BinaryNode*> bNodeQueue;
bNodeQueue.push(root);
//当前层次, 队列中当层次有的节点数
int level = 1;
int levelNodes = 1;
//下一层次,队列中下层次节点数
int nextLevel = level + 1;
int nextLevelNodes = 0;

while(!bNodeQueue.empty())
{
//检查当前层是否还有节点
if(levelNodes == 0)
{
level++;
levelNodes = nextLevelNodes;
nextLevel++;
nextLevelNodes = 0;
}
//当前层次出队列
BinaryNode* pTemp = bNodeQueue.front();
bNodeQueue.pop();
levelNodes--;
cout <<level << ": " << pTemp->m_data << "\t";
//扩展下一层到队列
if(pTemp->m_left)
{
bNodeQueue.push(pTemp->m_left);
nextLevelNodes++;
}
if(pTemp->m_right)
{
bNodeQueue.push(pTemp->m_right);
nextLevelNodes++;
}
}
return level;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐