主题:可以帮下吗 初学者的问题
4590456
[专家分:0] 发布于 2007-01-22 19:49:00
void InOrder(BinTree T)
{ //算法里①~⑥是为了说明执行过程加入的标号
① if(T) { // 如果二叉树非空
② InOrder(T->lchild);
③ printf("%c",T->data); // 访问结点
④ InOrder(T->rchild);
⑤ }
⑥ } // InOrder
可以用①~⑥说明一下他的执行过程吗 迷惑中...
回复列表 (共8个回复)
沙发
boxertony [专家分:23030] 发布于 2007-01-24 20:11:00
对于递归,千万不能钻牛角尖,否则越钻越糊涂(除非你的耐心特别好);关键还是在于理解其思想。
板凳
雪光风剑 [专家分:27190] 发布于 2007-01-24 21:07:00
就是先顺左子树找到树叶
然后退一步找右子树,再找完就整体退一层找
3 楼
4590456 [专家分:0] 发布于 2007-01-24 21:17:00
我知道怎么遍历 可是程序看不懂~~```不知道怎样递归的
4 楼
雪光风剑 [专家分:27190] 发布于 2007-01-24 21:27:00
自己画一颗简单的二叉树跟一遍不就清楚了
我现在脑子里很清楚
算法是什么样,程序就是怎么运行的
5 楼
4590456 [专家分:0] 发布于 2007-01-24 21:37:00
能解释下 当T为空时候 执行哪条语句吗
6 楼
雪光风剑 [专家分:27190] 发布于 2007-01-24 21:49:00
T为空的话跳过if段
也就是不做任何事情直接返回
7 楼
4590456 [专家分:0] 发布于 2007-01-24 21:53:00
返回到上一个调用函数吗 那怎么访问最左边的值
8 楼
雪光风剑 [专家分:27190] 发布于 2007-01-24 22:33:00
是的,返回上一调用处执行打印
最左边的值是这么访问到的
当前不为空-〉访问左孩子-〉当前不为空-〉访问左孩子-〉………………——〉访问最
左节点-〉访问左孩子(空)
^ |
| |
-----------
这样取到的
我来回复