今天复习时遇到这道题给我整不会了,花了很多时间才搞明白…’
刚开始我用的是系统栈的思想,实在想不出为什么只有后序遍历可以确定路径,三种遍历的根节点不是都是在左右子树全部访问完出栈后才会出栈的吗?
但如果采用非递归的思想:
先序遍历
void function1(BiTree T){
InitStack(S); //初始化栈
BiTree p = T; //指向要被访问的节点
while(p||!isEmpty(S)){
//当指针没有指向空或栈不为空时
if(p!=NULL){
Push(S,p) //入栈
visit(p);