#include <iostream>
using namespace std;
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <queue>
class Node{
public:
int val;
Node *left, *right;
Node(int x) :
val(x), left(NULL), right(NULL) {
}
//Node(){right = NULL; left = NULL;}
};
Node* build(Node* root, int val){
if(root == NULL){
root = new Node();
root->val = val;
return root;
}
if(val < root->val) root->left = build(root->left, val);
else if(val > root->val) root->right = build(root->right, val);
return root;
}
void levelOrder(Node* root){
queue<Node*> q;
q.push(root);
while(!q.empty()){
Node *temp = q.front();
q.pop();
cout<<temp->val<<" ";
if(temp->left) q.push(temp->left);
if(temp->right) q.push(temp->right);
}
}
//先序遍历
void preorder(Node* root){
if(root!=NULL){
//visit(root.getData());
cout<<root->val<<endl;
preorder(root->left);
preorder(root->right);
}
}
//中序遍历
void inorder(Node* root){
if(root!=NULL){
inorder(root->left);
//visit(root.getData());
cout<<root->val<<endl;
inorder(root->right);
}
}
//后序遍历
void afterorder(Node* root){
if(root!=NULL){
afterorder(root->left);
afterorder(root->right);
//visit(root.getData());
cout<<root->val<<endl;
}
}
int main(){
Node *root = NULL;
int t[] = {5,4,6,3,7};
for(int i = 0; i < 5; i++) root = build(root, t[i]);
//levelOrder(root);
preorder(root);
return 0;
}
树的创建,遍历
最新推荐文章于 2023-03-14 17:04:32 发布