[层次遍历算法笔试题]层次遍历算法 二叉树的数据结构 structBinaryTree { int value; 不写模板了,暂时用整形代替节点的数据类型 BinaryTree *left; BinaryTree *right; }; BinaryTree*root; 已知...+阅读
后序遍历非递归算法
#define maxsize 100
typedef enum{L,R} tagtype;
typedef struct
{
Bitree ptr;
tagtype tag;
}stacknode;
typedef struct
{
stacknode Elem[maxsize];
int top;
}SqStack;
后序遍历
void PostOrderUnrec(Bitree t)
{
SqStack s;
stacknode x;
StackInit(s);
p=t;
do
{
while (p!=null) 遍历左子树
{
x.ptr = p;
x.tag = L; 标记为左子树
push(s,x);
p=p-lchild;
}
while (!StackEmpty(s) s.Elem[s.top].tag==R)
{
x = pop(s);
p = x.ptr;
visite(p-data); tag为R,表示右子树访问完毕,故访问根结点
}
if (!StackEmpty(s))
{
s.Elem[s.top].tag =R; 遍历右子树
p=s.Elem[s.top].ptr-rchild;
}
}while (!StackEmpty(s));
} PostOrderUnrec
延伸阅读:
程序员递归面试问题及解析面试例题 2:八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是 19 世纪著名的数学家高斯 1850 年提出:在 88 格的国际象棋盘上摆放 8 个皇后,使其不能互相攻击,...