版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}
}
树的后序非递归遍历
求带权路径长度