二叉树的层序遍历
借助辅助队列,扫描到有左右子树就进入队列
void LevelOder(BiTree T) {
LinkQueue Q;
InitQueue(Q);
BiTree p;
Enqueue(Q, T);
while (!isEmpty(Q)) {
DeQueue(Q, p);
visit(p);
if (p->lchild != NULL)
EnQueue(p->lchild);
if (p->rchild != NULL)
EnQueue(p->rchild);
}
}
二叉树先序遍历
void PreOrder(BiTree T) {
if (T != NULL) {
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
二叉树中序遍历
void InOrder(BiTree T) {
if (T != NULL) {
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
}
二叉树后序遍历
void PostOrder(BiTree T) {
if (T != NULL) {
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
}
树的后根遍历(深度优先遍历)
void PostOrder(TreeNode* R) {
if (R != NULL) {
if (R还有下一个子树) {
PostOrder(下一个子树);
}
visit(R);
}
}
树的先根遍历(深度优先遍历)
void PreOrder(TreeNode* R) {
if(R != NULL) {
visit(R);
if (R还有下一个子树) {
PreOrder(下一个子树);
}
}
}
树的层序遍历(与二叉树的层序遍历相同)[广度优先遍历]