// 输出二叉树中节点最多的层.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <queue>
int maxLevel(node *root, *maxNodes)
{
int max_nodes, max_level, cur_level;
if (root == NULL)
return 0;
queue<node *> currentLevelQueue, nextLevelQueue;
currentLevelQueue.push(root);
max_level = 1;
max_nodes = 1;
cur_level = 1;
while(!currentLevelQueue.empty)
{
node* curNode = currentLevelQueue.front();
if (curNode)
{
if (curNode->left)
{
nextLevelQueue.push(curNode->left);
}
if (curNode->right)
{
nextLevelQueue.push(curNode->right);
}
}
currentLevel.pop();
if (currentLevelQueue.empty())
{
if (!nextLevelQueue.empty())
{
cur_level++;
if (nextLevelQueue.size() > max_nodes)
{
max_nodes = nextLevelQueue.size();
max_level = cur_level;
}
currentLevelQueue = nextLevelQueue;
}
}
}
*maxNodes = max_Nodes;
return max_level;
}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
输出二叉树中节点最多的层
最新推荐文章于 2021-05-11 12:25:22 发布