算法思想:采用后序非递归遍历,访问到值为x的结点时,栈中所有元素均为该节点的祖先节点。
void postorderTraversal(TreeNode* root) { TreeNode *r; TreeNode *p=root; stack<TreeNode*> s; while(!s.empty()||p){ if(p){ s.push(p); p=p->left; }else{ p=s.top(); if(p->right&&p->right!=r){ p=p->right; s.push(p); p=p->left; }else{ r=s.top(); s.pop(); if(r->val==9){ while(!s.empty()){ cout<<s.top()->val<<" "; s.pop(); } break; } p=NULL; } } } }