1. 程式人生 > >必須掌握的常用演算法

必須掌握的常用演算法

如果能把一些常用的演算法記住的話,定當是能在考場上大放異彩的咯,不廢話,先上一個思維導圖。
在這裡插入圖片描述

 	樹的先序非遞迴遍歷
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;
        }
    }    
}

樹的後序非遞迴遍歷

在這裡插入圖片描述

求帶權路徑長度
在這裡插入圖片描述