在求二叉树深度的时候写的代码是这样的
if (!T)
{
return 0;
}
else
{
int m=BiTreeDepth(T->lchild);
int n=BiTreeDepth(T->rchild);
}#区别再这个括号的位置
if (m>n)
{
return m+1;
}
else
{
return n+1;
}
运行结果是错的
而我改正之后的代码是
if (!T)
{
return 0;
}
else
{
int m=BiTreeDepth(T->lchild);
int n=BiTreeDepth(T->rchild);
if (m>n)
{
return m+1;
}
else
{
return n+1;
}
}#区别再这个括号的位置
这个时候运行结果就是正确的
想请问后面的if代码放在上一个else里面和不放在里面的区别是什么
上面错误是因为返回的结果不是递归结束后的值,
下面的代码已经把返回控制在else语句块内部了,属于后根遍历。
后面代码使用的m和n是紧接前面int m和int n的m和n
前面代码使用的m和n根本不是紧接前面int m和int n的m和n