hdu3999二叉排序树
https://vjudge.net/problem/22959/origin
题意及思路: 构建二叉排序树 并输出它的前序遍历;
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
const int maxn = 100000 + 10;
typedef long long ll;
int a[maxn];
struct Node
{int data;Node *left;Node *right;
};
int n;
void inserts(Node *(&t),int x)
{if(t == NULL){t = new Node;t -> data = x;t -> left = t -> right = NULL;return;}else{if(x > t -> data){inserts(t -> right,x);}else inserts(t -> left,x);}
}
Node* Creat_tree(Node *tree)
{tree -> data = a[0];for(int i = 1; i < n; i ++){inserts(tree,a[i]);}return tree;
}
queueans;
void pre_Print(Node* t)
{if(t == NULL)return;ans.push(t -> data);pre_Print(t -> left);pre_Print(t -> right);
}
int main()
{while( ~ scanf("%d",&n)){for(int i = 0; i < n; i ++)scanf("%d",&a[i]);Node *tree = new Node;tree -> left = tree -> right = NULL;Creat_tree(tree);pre_Print(tree);while(!ans.empty()){int t = ans.front();ans.pop();if(ans.empty())cout << t << endl;else cout << t << " ";}}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
