由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 非递归求二叉树高度,除了按层次遍历的方法,还可以怎么做?
相关主题
请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversalyelp 电面面经应该已跪了
请问一个关于递归算法的问题。G家实习电面总结
一道二叉树的老题问个G家店面题完全二叉树
问一道二叉树遍历的问题? 谢谢!新鲜fb面经
如何随机找二叉树中的任意节点?FLG面经:如何分块pre-order遍历一棵树?
二叉树后续遍历,不用递归和栈,只有个parent指针一道FB的followup 问题
[讨论] 算法超级大总结-- 面试中二叉树中常常考的题目,欢迎大家进来补充MS面试题
遍历二叉树除了recursion还有啥好办法?[面试题] 如何打印一个二叉树level by level?
相关话题的讨论汇总
话题: treenode话题: curchild话题: pair话题: int
进入JobHunting版参与讨论
1 (共1页)
r****o
发帖数: 1950
1
非递归求二叉树的高度,可以用按层次遍历的方法,层数就是高度。
还有其他方法可以非递归求二叉树高度吗?
f*******e
发帖数: 1161
2
节点加一个data field: depth

【在 r****o 的大作中提到】
: 非递归求二叉树的高度,可以用按层次遍历的方法,层数就是高度。
: 还有其他方法可以非递归求二叉树高度吗?

r****o
发帖数: 1950
3
然后pre-order遍历?
如果不改动节点数据结构的话,有什么方法可行吗?

【在 f*******e 的大作中提到】
: 节点加一个data field: depth
d*****a
发帖数: 38
4
这应该和如何遍历没关系,总之就是遍历所有叶结点才能得到深度。
r****o
发帖数: 1950
5
好吧,能不能具体说说怎么弄呢? 如果不改变节点数据结构的话。

【在 d*****a 的大作中提到】
: 这应该和如何遍历没关系,总之就是遍历所有叶结点才能得到深度。
m*****g
发帖数: 226
6
int treeDepthNonRec(treeNode *root)
{
int maxDepth = 0;
if(!root) return 0;
stack > treeNodeStack;
//using traversal
treeNodeStack.push(make_pair(root, root->numChildren));

int depth = 0;
while(!treeNodeStack.empty())
{
pair curNode = treeNodeStack.top();
treeNodeStack.pop();
if(curNode.second)
{
treeNode *curChild = curNode.first->children[curNode.second-1];
r****o
发帖数: 1950
7
多谢!

【在 m*****g 的大作中提到】
: int treeDepthNonRec(treeNode *root)
: {
: int maxDepth = 0;
: if(!root) return 0;
: stack > treeNodeStack;
: //using traversal
: treeNodeStack.push(make_pair(root, root->numChildren));
:
: int depth = 0;
: while(!treeNodeStack.empty())

h****8
发帖数: 599
8
请教一下 有个地方没看懂
if(curNode.second)
{
treeNode *curChild = curNode.first->children[curNode.second-1];
treeNodeStack.push(make_pair(curNode.first, curNode.second-1));
treeNodeStack.push(make_pair(curChild, curChild->numChildren));
}
else
{
if(!(curNode.first->numChildren)) //leaf node
{
depth = 0;
}
else
这里最后一个else是什么情况?哪些情况才会depth++?

【在 m*****g 的大作中提到】
: int treeDepthNonRec(treeNode *root)
: {
: int maxDepth = 0;
: if(!root) return 0;
: stack > treeNodeStack;
: //using traversal
: treeNodeStack.push(make_pair(root, root->numChildren));
:
: int depth = 0;
: while(!treeNodeStack.empty())

1 (共1页)
进入JobHunting版参与讨论
相关主题
[面试题] 如何打印一个二叉树level by level?如何随机找二叉树中的任意节点?
关于遍历二叉树的复杂度二叉树后续遍历,不用递归和栈,只有个parent指针
判断(二叉)树是否镜像对称[讨论] 算法超级大总结-- 面试中二叉树中常常考的题目,欢迎大家进来补充
一道MS面试题遍历二叉树除了recursion还有啥好办法?
请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversalyelp 电面面经应该已跪了
请问一个关于递归算法的问题。G家实习电面总结
一道二叉树的老题问个G家店面题完全二叉树
问一道二叉树遍历的问题? 谢谢!新鲜fb面经
相关话题的讨论汇总
话题: treenode话题: curchild话题: pair话题: int