给你二叉搜索树的层序遍历,重构二叉搜索树,问到达节点的步骤
二叉搜索树练习题
#include<cstdio> #include<cmath> #include<queue> #include<cstring> #include<vector> #include<iostream> #include<algorithm> using namespace std; struct node { int val; node *left,*right; node(int val):val(val),left(NULL),right(NULL){} }; int a[1010]; node* build(node *root,int val) { if(NULL==root) { root=new node(val); } else{ if(val<root->val)root->left=build(root->left,val); else root->right=build(root->right,val); } return root; } void print(node *root,int val) { if(val==root->val){ puts(""); return; } if(val<root->val){ putchar('E'); print(root->left,val); } else { putchar('W'); print(root->right,val); } } int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&a[i]); node *root=NULL; for(int i=0;i<n;i++){ root=build(root,a[i]); } int Q; scanf("%d",&Q); while(Q--) { int val; scanf("%d",&val); print(root,val); } } return 0; }
浙公网安备 33010602011771号