遍历即将树的所有结点访问且仅访问一次。按照根节点位置的不同分为前序遍历,中序遍历,后序遍历。 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍历:左子树->右子树->根节点
用递归方法实现三种遍历还是比较简单的,也比较好理解。
前序:
void pre_order (BTreeNode
*node)
{
if (node
== NULL)
return;
printf (
"L", node
->data);
pre_order (node
->lchild);
pre_order (node
->rchild);
}
中序:
void mid_order (BTreeNode
*node)
{
if (node
== NULL)
return;
mid_order (node
->lchild);
printf (
"L", node
->data);
mid_order (node
->rchild);
}
后序:
void last_order (BTreeNode
*node)
{
if (node
== NULL)
return;
last_order (node
->lchild);
last_order (node
->rchild);
printf (
"L", node
->data);
}
三种方式打印出来的结果就是三种遍历的结果。