这个是什么思路啊,遍历树的时候
这个非递归的算法前序遍历不好理解啊这是来自网上。不好理解void PostOrderUnrec(Bitree t){ SqStack s; stacknode x; StackInit(s); p=t; do { while (p!=null) //遍历左子树 { x.ptr = p; x.tag = L; //标记为左子树 push(s,x); p=p->lchild; } while (!StackEmpty(s) && s.Elem[s.top].tag==R) { x = pop(s); p = x.ptr; visite(p->data); //tag为R,表示右子树访问完毕,故访问根结点 } if (!StackEmpty(s)) { s.Elem[s.top].tag =R; //遍历右子树 p=s.Elem[s.top].ptr->rchild; } }while (!StackEmpty(s));}//PostOrderUnrec 我的思路是:始终不要把跟节点存到栈中,取出根节点,则立即 把子右树,左子树压入,如果是叶子节点,则退出。statck<BitNood*> s;s.push_back(root);while(!s.empty()){BitNood* p=s.top();s.pop_back();if(p->right){s.push(p->right);}if(p->left){s.push(p->left);}}这是我提供的伪代码, 觉得没有问题,不知道如何理解 网上的那个思路