最近在学二叉树,遇到了一道题,求二叉树b中值为x的节点的层号。
我就定义了一个全局变量Lno表示层号,每次进入下一层就Lno++,返回上一层就Lno--
如果找到就将Lno的值返回。通过cout语句发现Lno的值是正确的,但是为什么每次返回Lno的值都变回1
了呢?
//查找值为x的节点的层数
int Lno = 1;
int Findbyvalue(BTnode* root,char ch)
{
if (root != NULL)
{
//先序查找
if (root->data == ch)
{
cout << Lno;
cout << root->data;
return Lno;
}
++Lno;
Findbyvalue(root->lchild, ch);
Findbyvalue(root->rchild, ch);
--Lno;
}
}
int main()
{
BTnode node1 = { 'A',NULL,NULL };
BTnode node2 = { 'B',NULL,NULL };
BTnode node3 = { 'C',NULL,NULL };
BTnode node4 = { 'D',NULL,NULL };
BTnode node5 = { 'E',NULL,NULL };
BTnode node6 = { 'F',NULL,NULL };
BTnode node7 = { 'G',NULL,NULL };
BTnode node8 = { 'H',NULL,NULL };
node1.lchild = &node2;
node1.rchild = &node6;
node2.rchild = &node3;
node3.lchild = &node4;
node3.rchild = &node5;
node6.rchild = &node7;
node7.lchild = &node8;
cout<<Findbyvalue(&node1, 'H');
cout << Lno;
}