在二叉树中有两个结点m和n,若m是n的祖先,则使用后序遍历可以找到从m到n的路径
可作此图:

可见,此时m是n的祖先。
下面进行分析(圆球为输出)。
- 若使用先序遍历,即“根左右”,此时动作是:
![在这里插入图片描述]()
在n入栈前m已经出栈,无法确定路径。
- 若使用中序遍历,即“左根右”,此时动作是:
![在这里插入图片描述]()
在n入栈前m已经出栈,无法确定路径。
- 若使用中序遍历,即“左根右”,此时动作是:
![在这里插入图片描述]()
在n入栈后,m仍在栈中,且此时栈中有m、b、n,可见路径为m-b-n,路径找到。

可见,此时m是n的祖先。
下面进行分析(圆球为输出)。
在n入栈前m已经出栈,无法确定路径。
在n入栈前m已经出栈,无法确定路径。
在n入栈后,m仍在栈中,且此时栈中有m、b、n,可见路径为m-b-n,路径找到。


