二叉树的遍历
二叉树的遍历是指:按照某条搜索路径访问树的每一个节点,并且每个节点都被访问一次。
遍历顺序
前序遍历: 根->左->右
中序遍历: 左->根->右
后序遍历: 左->右->根
前序遍历与中序遍历,后序遍历与中序遍历,层次遍历与中序遍历。都可以确定一棵二叉树。
在二叉树中有m,n两个节点,若m为n的祖先,可以用后序遍历找到m到n的路径。
用递归方法来遍历二叉树
//定义节点
typedef struct BiNode{
ElemType c; //数据域
struct BiNode *lchild, *rchild; //左右孩子指针
}BiNode, *BiTree;
void preoder(BiTree p)//前序遍历
{
if(p!=NULL)
{
cout<<p->c;
preoder(p->lchild);
preoder(p->rchild);
}
}
void inorder(BiTree p)//中序遍历
{
if(p!=NULL)
{
inorder(p->lchild);
cout<<p->c;
inorder(p->rchild);
}
}
void postorder(BiTree p) //后序遍历
{
if(p!=NULL)
{
postorder(p->lchild);
postorder(p->rchild);
cout<<p->c;
}
}