求二叉樹的高度(非遞迴) .----美團二面=----硬傷 當時沒有答上來
阿新 • • 發佈:2018-12-31
#include <queue>
using namespace std;
int calculateTreeHeight(Node *root)
{
if(root == NULL)
return 0;
int visitedNumber = 0;
int enQueNumber = 1; //當前入棧的序號,root為1
int lastLevelNumber = 1;
int height = 0;
queue<Node*> q;
q.push(root);
while(!q.empty())
{
Node *node = q.front();
q.pop();
visitedNumber++;
if(node->left != NULL)
{
q.push(node->left);
enQueNumber++;
}
if(node->right != NULL)
{
q.push(node->right);
enQueNumber++;
}
//訪問到當前level上的最後一個節點
if(visitedNumber == lastLevelNumber)
{
height++;
lastLevelNumber = enQueNumber;
}
}
return height;
}