求二叉树的高度(非递归) .----美团二面=----硬伤 当时没有答上来
2013-10-13 20:08
204 查看
#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;
}
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;
}
相关文章推荐
- 获取二叉树的高度(递归)
- Java二叉树的递归,非递归遍历,高度,节点数,叶子节点数
- 二叉树基本算法,递归非递归遍历以及求高度、宽度等
- java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)
- 利用层次遍历非递归求二叉树高度
- 计算二叉树的高度的递归和非递归实现
- 二叉树----节点个数、高度、递归和非递归遍历、按层遍历
- 4-8 求二叉树高度 *(递归)
- 昨天参加一面试,结果考官问了这问题。当时没有答上来,汗颜的很啊,于是有了此篇文章.
- 二叉树深度高度统计递归
- 递归求二叉树的高度
- 二叉树(递归遍历和非递归遍历)(递归求树的高度以及叶子节点数和拷贝树)
- 二叉树的递归实现(前序,中序,后序,层序,高度,叶子节点数,第k层节点数)
- 二叉树非递归遍历、层次遍历、高度、节点数
- 二叉树基本操作的递归实现(二叉树建立,先序,中序,后序,深度的递归遍历。广度优先,高度优先的非递归遍历)
- 递归求二叉树的高度
- 求二叉树的前中后序递归、迭代,树的叶子节点,高度(c语言)
- 二叉树递归非递归三序访问,节点数,高度全操作
- 二叉树的查找、二叉树高度、二叉树获得双亲结点、构造二叉树、二叉树的广义表表示法、二叉树的插入删除、二叉树的非递归实现
- 如何求二叉树的高度(递归实现)