数据结构树的问题

数据结构树的问题请问在先序遍历树,画红线的那一行在进行了递归调用此时pt已经指向的B的左右指针域都为空了还怎么遍历到C的

这个函数里左右指针都为空,当然遍历不到C,所以函数结束,返回上层函数,上层函数的pt指向A,当前已遍历完左子树,接下来从右子树的根节点C开始递归遍历右子树。追问

第一次递归调用,Pt没有指向B节点吗(画横线的语句)

追答

第一次递归当然是从根节点A开始递归

追问

哦,是输出A数据域以后

第一条判空语句if里面递归

请问此时不是把B的地址发给了pt吗

追答

你不要管A的左子树是怎么递归的,你就把它想象成一条语句,作用就是输出A的整个左子树,它执行完后接下来开始执行递归遍历右子树的语句。

追问

不清楚为什么能够遍历完左右子树的

追答

先递归遍历左子树,完成后再递归遍历右子树,整个递归过程抽象起来不就是上面的两条语句吗?

追问

是的,但是为什么能够执行,拆分看为什么不对啊

追答

为什么不能够执行?你凭什么觉得它不能够执行?

追问

我对递归执行过程不明白

追答

再好好理解下什么是递归吧。

追问

是这个递归过程不明白为,执行过红线的不是pt指向了b吗

追答

那是递归子函数里的pt指向B,关当前函数的pt什么事呢?当前函数的pt永远指向A

追问

但它不是相当于形参传给了pt了吗

实参

追答

传给的是子函数里的形参pt,关当前函数里的形参pt什么事??这两者根本就是完全独立的两个变量,分属它们各自所在函数的栈空间

追问

你所说的当前函数是哪一个函数啊

追答

当前执行的父函数,该函数的pt指向A,由该函数递归调用自身去分别遍历左右子树,被调用的函数成为该函数的子函数

温馨提示:内容为网友见解,仅供参考
无其他回答