二叉树的遍历算法有多种,典型的有先序遍历、中序遍历、后序遍历以及层序遍历。而且这些遍历的递归算法较为简单,代码很少,容易实现,本文就是汇总二叉树遍历的递归算法,非递归算法将在下一篇文章中进行总结。本文中用到的二叉树实例如下:
3 / \ 9 20 / \ 15 7
二叉树定义和辅助函数如下:
struct node {
int data;
struct node* left;
struct node* right;
};
void visit(int data)
{
printf("%d ", data);
}
1、先序遍历
先序遍历:先访问二叉树的根结点,而后遍历左子树,最后遍历右子树。先序遍历二叉树实例结果为:3 9 20 15 7。递归算法代码如下:
void preOrder(struct node* root)
{
if (root == NULL)
return;
visit(root->data);
preOrder(root->left);
preOrder(root->right);
}