本文主要是介绍6、怎样从顶部开始逐层打印二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/************************************************************************/
/* 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;
}
这篇关于6、怎样从顶部开始逐层打印二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!