二叉树遍历与操作
1. 二叉树的遍历
二叉树的遍历是指按照某种顺序访问二叉树中的所有节点。常见的遍历方式有三种:前序遍历、中序遍历和后序遍历。每种遍历方式都有其特点和应用场景,下面将详细介绍这三种遍历方式。
1.1 前序遍历(Pre-order Traversal)
前序遍历的顺序是:访问根节点 -> 递归遍历左子树 -> 递归遍历右子树。这种方式适用于需要首先处理根节点的场景,例如构建表达式树。
示例代码
void PreOrderTraversal(ELEMENT* q) {
if (q != NULL) {
printf("%d ", q->data); // 访问根节点
PreOrderTraversal(q->left); // 递归遍历左子树
PreOrderTraversal(q->right); // 递归遍历右子树
}
}
1.2 中序遍历(In-order Traversal)
中序遍历的顺序是:递归遍历左子树 -> 访问根节点 -> 递归遍历右子树。这种方式适用于需要按升序访问二叉搜索树的情况。
示例代码
void InOrderTraversal(ELEMENT* q) {
if (q != NULL) {
InOrderTraversal(q->left);