二叉树的非递归遍历(前中后)

来源:互联网 发布:端口转发手机软件 编辑:程序博客网 时间:2024/06/06 03:03
//前序void PreOrder_Nor(){if(_pRoot == NULL)return;stack<Node*> s;s.push(_pRoot);while(!s.empty()){Node* pCur = NULL;pCur = s.top();cout<<pCur->_data<<" ";s.pop();if(pCur->_pRight)s.push(pCur->_pRight);if(pCur->_pLeft)s.push(pCur->_pLeft);}cout<<endl;}//中序void InOrder_Nor(){if(_pRoot == NULL)return;stack<Node*> s;Node* pCur = NULL;pCur = _pRoot;while(pCur || !s.empty()){while(pCur){s.push(pCur);pCur = pCur->_pLeft;}            pCur = s.top();cout<<pCur->_data<<" ";s.pop();pCur = pCur->_pRight;}cout<<endl;}// 后续遍历的非递归版本void PostOrder_Nor(){if(_pRoot == NULL)return;stack<Node*> s;Node* pCur = _pRoot;Node* prev = NULL;while(pCur || !s.empty()){while(pCur){s.push(pCur);pCur = pCur->_pLeft;}Node* temp = NULL;temp = s.top();if(temp->_pRight == NULL || prev == temp->_pRight){cout<<temp->_data<<" ";prev = temp;s.pop();}elsepCur = temp->_pRight;}cout<<endl;}

原创粉丝点击