从求二叉树的深度的递归函数中,使用debug调试更深刻的理解程序的运行过程。intBTNodeDepth(BTNode*b)求二叉树b的深度{intlchilddep0,rchil 从求二叉树的深度的递归函数中,使用debug调试更深刻的
从求二叉树的深度的递归函数中,使用debug调试更深刻的理解程序的运行过程。 int BTNodeDepth(BTNode *b) //求二叉树b的深度 { int lchilddep = 0 ,rchilddep = 0; if (b==NULL) return(0); //空树的高度为0 else { lchilddep = BTNodeDepth(b->lchild); //求左子树的高度为lchildde rchilddep = BTNodeDepth(b->rchild); //求右子树的高度为rchilddep return (lchilddep>rchilddep)? (lchilddep+1):(rchilddep+1); } }
例如这里使用完函数后再return时,会将return 中的值赋值给lchilddep或lchilddep。 在debug中看到的现象时会回到这个函数(debug箭头指向这个函数,执行的是赋值操作) 在去执行下一个函数。 这里 = 号是得到上一个return里的值。
递归函数变量赋初值问题,为什么不加static?,每次int lchilddep = 0 ,rchilddep = 0;都是新的变量(相当于调用新的函数)创建新的空间这里的被赋值的地方都是上一个return返回的,所以不加。
二这里递归都是反哺上去的值。
对递归有了图表化的认识,想象成二叉树排布的房间,只有一个返回则想象成每一层都只有一个节点的树,两个以上则想象成多叉树。
【本文来源:韩国服务器 http://www.558idc.com/kt.html欢迎留下您的宝贵建议】