如何编写一个计算某个结点在二叉树中深度的函数

来源:互联网  时间:2016/8/26 19:35:02

关于网友提出的“ 如何编写一个计算某个结点在二叉树中深度的函数”问题疑问,本网通过在网上对“ 如何编写一个计算某个结点在二叉树中深度的函数”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何编写一个计算某个结点在二叉树中深度的函数
描述:

二叉树

我在网上搜索到的计算某个结点在二叉树中深度的函数:
template
int get_node_layer(stnode *node,T value,int L)
{
int i=-1;  
if(node)
{     
if(node->nodeValue ==value) 
return L;     
if(i = get_node_layer(node->left,value ,L+1)!=-1) //查左子树,如找到就返回
return i;    
if(i = get_node_layer(node->right,value ,L+1)!=-1)//查右子树,如找到就返回
return i; 

return i;
}
这个函数其运算结果不正确,怎么回事?又该如何修改?请老师指点。谢谢。
解决方案1:

递归与非递归 两种方法 加一个父指针非常容易  
int Deepth_Recursion(int deepth, BiNode* node){
    if (node == NULL)
        return deepth;
    else
        Deepth_Recursion(++deepth, node->parent);
}
 
int Deepth_NonRecursion(BiNode* node){
    int deepth = 0;
    while (node != NULL){
        ++deepth;
        node = node->parent;
    }
    return deepth;
}

解决方案2:

楼主是应该会二叉树节点的寻找的 
你可以设置一个值来记录

解决方案3:

因为函数是错误的

解决方案4:

二叉树
http://blog.csdn.net/zhangxiangdavaid/article/details/36634411

解决方案5:

“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出

上一篇基类指针可以指向派生类对象,基类指针不能转换为派生类指针?
下一篇如何编写一个好的类;
明星图片
相关文章
《 如何编写一个计算某个结点在二叉树中深度的函数》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)