算法列表 |
递归算法:
|
非递归算法
|
//先序遍历二叉树
bool PreOrder(PBitNode B)
{
if (B != NULL)
{
printf("%d ", B->data);
PreOrder(B->lchild);
PreOrder(B->rchild);
}
return true;
}
//中序遍历二叉树
bool inorder(PBitNode B)
{
if (B!=NULL)
{
inorder(B->lchild);
printf("%d ", B->data);
inorder(B->rchild);
}
return true;
}
//后序遍历二叉树
bool postorder(PBitNode B)
{
if (B!=NULL)
{
inorder(B->lchild);
inorder(B->rchild);
printf("%d ", B->data);
}
return true;
}
//中序遍历二叉树 非递归算法
void inOrder(PBitNode root)
{
if (root == NULL)
return;
PBitNode p = root;
stackNode s;
InitStack(s);
while(!StackEmpty(s) || p)
{
if (p)
{
PushStack(s, p);
p = p->lchild;
}
else
{
GetStackTopElement(s, &p);
PopStack(s);
std::cout << p->data;
p = p->rchild;
}
}
}
//先序遍历二叉树 非递归算法
void preOrder(PBitNode root)
{
if (root == NULL)
return;
PBitNode p = root;
stackNode s;
InitStack(s);
while (!StackEmpty(s) || p)
{
using namespace std;
if (p)
{
cout << p->data;
PushStack(s, p);
p = p->lchild;
}
else
{
GetStackTopElement(s, &p);
PopStack(s);
p= p->rchild;
}
}
}