树的遍历是指访问树的每一个结点,且每一个结点只被访问一次。访问是一个抽象的概念,实际上可以是对结点数据的各种处理,比如输出结点信息或更改结点信息。根据二叉树的构成以及结点的访问顺序,遍历可分为4种方式:先序遍历,中序遍历,后序遍历和层序遍历。
中序遍历是指对树中任意结点的访问总是在遍历完其左子树之后进行的,访问此结点后再遍历其右子树。遍历从根结点开始,遇到每个节点遍历过程如下:
- 中序遍历其左子树
- 访问根结点
- 中序遍历其右子树
如上图所示二叉树,其遍历结果为: 4 8 2 5 1 9 6 10 3 7
(此处访问节点定义为输出结点数据)
如上过程用递归可以很方便地实现,代码如下:
二叉树的结构定义
typedef struct TreeNode * BinTree;
struct TreeNod