必须掌握的常用算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37737804/article/details/82952088

如果能把一些常用的算法记住的话,定当是能在考场上大放异彩的咯,不废话,先上一个思维导图。
在这里插入图片描述

 	树的先序非递归遍历
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;
        }
    }    
}

树的后序非递归遍历

在这里插入图片描述

求带权路径长度
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37737804/article/details/82952088