一、定义
树的遍历是按照一定的顺序访问树的所有节点,常用的遍历方式有三种:先序遍历、中序遍历和后序遍历。
-
先序遍历:从根节点开始,按照根节点-左子树-右子树的顺序遍历整棵树,即先访问根节点,然后遍历左子树、右子树。(NLR)
-
中序遍历:从根节点开始,按照左子树-根节点-右子树的顺序遍历整棵树,即先遍历左子树,然后访问根节点,最后遍历右子树。(LNR)
-
后序遍历:从根节点开始,按照左子树-右子树-根节点的顺序遍历整棵树,即先遍历左子树,然后遍历右子树,最后访问根节点。(LRN)
二、例子
三、应用
1.求树的深度
int treeDepth(BiTree T) {
if (T == NULL) {
return 0;
} else {
int l = treeDepth(T->lchild);
int r = treeDepth(T->rchild);//树的深度=Max(左子树深度,右子树深度)+1
return l > r ? l + 1 : r + 1;
}
}