二叉树的遍历:前序、中序、后序遍历,递归

性质:
- 已知先序和中序,可以确定出二叉树
- 已知中序和后序,可以确定出二叉树
- 已知先序和后序,不可以确定出二叉树
// 链式存储结构#include <bits/stdc++.h>using namespace std;struct node{char data;node *lchild, *rchild;};node *root;// 按先序输入二叉树的结点,输入$表示空树void build(node* &p){char c;scanf("%c", &c);if (c == '$') p = NULL;else{p = new node();p->data = c;build(p->lchild); build(p->rchild);}}void pre_order(node *p){if (p == NULL) return;if (p->data != '$') cout << p->data;pre_order(p->lchild);pre_order(p->rchild);}void in_order(node *p){if (p == NULL) return;in_order(p->lchild);if (p->data != '$') cout << p->data;in_order(p->rchild);}void post_order(node *p){if (p == NULL) return;post_order(p->lchild);post_order(p->rchild);if (p->data != '$') cout << p->data;}int main(){build(root);pre_order(root);puts("");in_order(root);puts("");post_order(root);puts("");return 0;}/*输入:AB$$C$$输出:ABCBACBCA*/
例题,【例3-4】求后序遍历
//给出先序和中序,求后续void dfs(int l1, int r1, int l2, int r2)//根据先序l1位置的根,去找中序中根的位置
例题,【例3-5】扩展二叉树
//给出扩展二叉树的先序序列,输出中序和后序//题解给出的是指针写法【指针】
例题,二叉树遍历(flist)
//给出中序序列和按层序列,求先序序列//在按层遍历序列中先遇到根,在中序序列中,找到根的位置,break出来//进行递归处理void dfs(int l1, int r1, int l2, int r2)
