回 帖 发 新 帖 刷新版面

主题:可以帮下吗 初学者的问题

void InOrder(BinTree T)
        { //算法里①~⑥是为了说明执行过程加入的标号
          ① if(T) { // 如果二叉树非空
          ②    InOrder(T->lchild);
          ③    printf("%c",T->data); // 访问结点
          ④    InOrder(T->rchild);
          ⑤  }
          ⑥ } // InOrder 
可以用①~⑥说明一下他的执行过程吗  迷惑中...

回复列表 (共8个回复)

沙发

对于递归,千万不能钻牛角尖,否则越钻越糊涂(除非你的耐心特别好);关键还是在于理解其思想。

板凳

就是先顺左子树找到树叶
然后退一步找右子树,再找完就整体退一层找

3 楼

我知道怎么遍历 可是程序看不懂~~```不知道怎样递归的

4 楼

自己画一颗简单的二叉树跟一遍不就清楚了
我现在脑子里很清楚
算法是什么样,程序就是怎么运行的

5 楼

能解释下 当T为空时候 执行哪条语句吗

6 楼

T为空的话跳过if段
也就是不做任何事情直接返回

7 楼

返回到上一个调用函数吗 那怎么访问最左边的值

8 楼

是的,返回上一调用处执行打印
最左边的值是这么访问到的
当前不为空-〉访问左孩子-〉当前不为空-〉访问左孩子-〉………………——〉访问最
左节点-〉访问左孩子(空)
  ^         |
  |         |
  -----------
这样取到的

我来回复

您尚未登录,请登录后再回复。点此登录或注册