题解 | #二叉排序树#
二叉排序树
https://www.nowcoder.com/practice/b42cfd38923c4b72bde19b795e78bcb3
#include <iostream> using namespace std; struct node{ int val; node* right,*left; node(int x):val(x),left(nullptr),right(nullptr){}; }; void insertnode(node *&a, int x) { if(a == nullptr) { a = new node(x); return ; } if(x < a->val) { insertnode(a->left,x); } else if(x > a->val) { insertnode(a->right,x); } } void pre(node* tree){ if(tree==nullptr)return; cout<<tree->val<<" "; pre(tree->left); pre(tree->right); } void mid(node* tree){ if(tree==nullptr)return; mid(tree->left); cout<<tree->val<<" "; mid(tree->right); } void post(node* tree){ if(tree==nullptr)return; post(tree->left); post(tree->right); cout<<tree->val<<" "; } int main() { int a; while (cin >> a) { node *tree = nullptr; int x; for(int i = 0;i < a; i++) { cin>>x; insertnode(tree,x); } pre(tree); cout<<endl; mid(tree); cout<<endl; post(tree); cout<<endl; } }