二叉树三种遍历方式 (C++实现)
众所周知,二叉树的遍历方式分为三种(前序遍历,中序遍历以及后序遍历)
- 前序遍历: 根 左 右
- 中序遍历: 左 根 右
- 后序遍历: 左 右 根
三部分代码通过C++代码实现
#include<iostream>
using namespace std;
struct node {
int data;
struct node* left;
struct node* right;
node() { data = 0; left = NULL; right = NULL; }
};
node* createTree(node* & root) {
int data;
cin >> data;
if(data == -1) { return NULL; }
root = new node();
root->data = data;
root->left = createTree(root->left);
root->right = createTree(root->right);
return root;
}
void traverseTreeBefore(node* & root) {
if(root == NULL) return;
printf("%d ", root->data);
traverseTreeBefore(root->left);
traverseTreeBefore(root->right);
}
void traverseTreeMiddle(node* & root) {
if(root == NULL) return;
traverseTreeMiddle(root->left);
printf("%d ", root->data);
traverseTreeMiddle(root->right);
}
void traverseTreeAfter(node* & root) {
if(root == NULL) return;
traverseTreeAfter(root->left);
traverseTreeAfter(root->right);
printf("%d ", root->data);
}
int main() {
node* root;
createTree(root);
traverseTreeBefore(root);
printf("\n");
traverseTreeMiddle(root);
printf("\n");
traverseTreeAfter(root);
printf("\n");
return 0;
}