二叉树高度和运行时栈深度的关系??
/**
* 计算二叉树的高度
* 根节点的高度为1,空节点的高度0
* 采用中序迭代的方式进行求解
*
* 树的高度就是运行时栈的最大深度
* 该想法经过验证有问题,对于没有左
* 树的情况不对。
**/
int height_in_iterative(node *root)
{
if (!root)
return 0;
int h = 0;
int max = 0;
node *cur = root;
stack<node*> s;
/*
* 如何证明该循环不会是一个死循环 ??
* 最后一个被访问的元素肯定没有右子树
**/
while (cur || !s.empty())
{
if (cur)
{
s.push(cur);
cur = cur->l;
h++;
if (h > max)
max = h;
}
else
{
cur = s.top();
s.pop();
h--;
cur = cur->r;
}
}
return max;
}