遍历方法
- 前序遍历 根左右
- 中序遍历 左根右
- 后序遍历 左右根
虽然二叉树的三种遍历有非递归实现的方法,而且时间复杂度较更小,但是递归实现代码简洁,并且有助于理解三种遍历的方式,所以这里优先采用了递归写法。
节点
用结构体表示一个节点
struct node{
char data;
node* lson;
node* rson;
};
typedef struct node Node;
代码实现
建树操作
输入#表示节点为空,这里我们采用的是前序的方式建立树
void buildTree(Node* & root){
char ch = getchar();
if (ch == '\n')
return;
else if (ch == '#') {
root = NULL;
return;
}
else{
root = (Node*)malloc(sizeof (Node));
root->data = ch;
buildTree(root->lson);
buildTree(root->rson);
}
}
三种遍历方式
可见每种遍历的核心代码都只有三行,相当简洁。
void preorder(Node* root){
if (root == NULL)