Redian新闻
>
Write an iterative method that finds depth of a (non-balanced) binary tree.
avatar
Write an iterative method that finds depth of a (non-balanced) binary tree.# JobHunting - 待字闺中
I*A
1
anyone has written it?
avatar
z*n
2
我觉得可以这样做
用non-recursive的in-order遍历,每次碰到叶子节点,就数一下当前stack里有几个元
素,这就是这条路径的长度,(因为只有根节点入栈,左右孩子不入)
剩下就简单了,和当前最长路径比一下就行了,最后结束时的最长路径就是高度

【在 I**A 的大作中提到】
: anyone has written it?
avatar
z*n
3
好像不对,碰到右边叶子的时候,对应的根节点已经弹出了

【在 z****n 的大作中提到】
: 我觉得可以这样做
: 用non-recursive的in-order遍历,每次碰到叶子节点,就数一下当前stack里有几个元
: 素,这就是这条路径的长度,(因为只有根节点入栈,左右孩子不入)
: 剩下就简单了,和当前最长路径比一下就行了,最后结束时的最长路径就是高度

avatar
z*n
4
改成用non-recursive的后序遍历就对了

【在 z****n 的大作中提到】
: 好像不对,碰到右边叶子的时候,对应的根节点已经弹出了
avatar
z*n
5
代码
int maxPath = 0;
s.push(root);
while(!s.empty)
{
Node* n = s.peek();
if(n->left!=null&&!n->left->visited)
s.push(n->left);
else
{
if(n->right!=null&&!n->right->visited)
s.push(n->right)
else
{
Visit(n);
n->visited=true;
/* calculating path length */
if(n->left==null&&n->right==null) //leaf
{
int path = s.size();
if(path>

【在 z****n 的大作中提到】
: 改成用non-recursive的后序遍历就对了
avatar
I*A
6
多谢~~~
我觉得这个思路是对的
有人有反对意见没?

【在 z****n 的大作中提到】
: 改成用non-recursive的后序遍历就对了
avatar
h*6
7
non-recursive的BFS最简单,数一数有多少行就行了。
avatar
I*A
8
啊,也对, this logic is easier to understand..
i like queue better than stack
//鄙视自己,简直是随风倒。。

【在 h**6 的大作中提到】
: non-recursive的BFS最简单,数一数有多少行就行了。
avatar
p*u
9
同意
正打算建议用BFS

【在 h**6 的大作中提到】
: non-recursive的BFS最简单,数一数有多少行就行了。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。