关于网友提出的“ 如何编写一个计算某个结点在二叉树中深度的函数”问题疑问,本网通过在网上对“ 如何编写一个计算某个结点在二叉树中深度的函数”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 如何编写一个计算某个结点在二叉树中深度的函数描述:
二叉树
我在网上搜索到的计算某个结点在二叉树中深度的函数:template
int get_node_layer(stnode
{
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;
}
楼主是应该会二叉树节点的寻找的
你可以设置一个值来记录
因为函数是错误的
解决方案4: 二叉树
http://blog.csdn.net/zhangxiangdavaid/article/details/36634411
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出