对于
二叉树
,树的遍历通常有四种:
先序遍历
、
中序遍历
、
后序遍历
、
广度优先遍历
。(前三种亦统称
深度优先遍历
)对于
多叉树
,树的遍历通常有两种:
深度优先遍历
、
广度优先遍历
。
深度优先遍历
以下均是用递归方法
先序遍历
指先访问根,然后访问孩子的遍历方式,其C代码如下:
void XXBL(tree* root){
-
//Do Something with root
-
if(root->lchild!=NULL)
-
XXBL(root->lchild);
-
-
if(root->rchild!=NULL)
-
XXBL(root->rchild);
-
}
中序遍历
指先访问左(右)孩子,然后访问根,最后访问右(左)孩子的遍历方式,其C代码如下
void ZXBL(tree* root){
-
if(root->lchild!=NULL)
-
ZXBL(root->lchild);
-
-
//Do Something with root
-
if(root->rchild!=NULL)
-
ZXBL(root->rchild);
-
}
后序遍历
指先访问孩子,然后访问根的遍历方式,其C代码如下
void HXBL(tree* root){
-
if(root->lchild!=NULL)
-
HXBL(root->lchild);
-
-
if(root->rchild!=NULL)
-
HXBL(root->rchild);
-
-
//Do Something with root
}
广度优先遍历
和深度优先遍历不同,广度优先遍历会先访问离根节点最近的节点。二叉树的广度优先遍历又称按层次遍历。算法借助队列实现。