必須掌握的常用演算法
阿新 • • 發佈:2018-11-08
如果能把一些常用的演算法記住的話,定當是能在考場上大放異彩的咯,不廢話,先上一個思維導圖。
樹的先序非遞迴遍歷
void preOrder2(BinTree *root) //非遞迴前序遍歷 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { cout<<p->data<<" "; s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); p=p->rchild; } } }
樹的非遞迴中序遍歷
void inOrder2(BinTree *root) //非遞迴中序遍歷 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); cout<<p->data<<" "; s.pop(); p=p->rchild; } } }
樹的後序非遞迴遍歷
求帶權路徑長度