1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> using namespace std;
struct node{ int data; node *lchild, *rchild; };
void insert_node(node **root, int data) { node *p = (node *)malloc(sizeof(node)); p->data = data; p->lchild = p->rchild = NULL; if((*root) == NULL){ (*root) = p; return ; } if((*root)->lchild == NULL && (*root)->data > data){ (*root)->lchild = p; return ; } if((*root)->rchild == NULL && (*root)->data < data){ (*root)->rchild = p; return ; } if((*root)->data > data) insert_node(&(*root)->lchild, data); else if((*root)->data < data) insert_node(&(*root)->rchild, data); else return ; }
void dfs(node *p) { if(p == NULL) return ; dfs(p->lchild); printf("%d ", p->data); dfs(p->rchild); }
node *search_node(node* root, int data) { if(root == NULL) return NULL; if(data < root->data) return search_node(root->lchild, data); else if(data > root->data) return search_node(root->rchild, data); else return root; }
int main() { node *root = NULL; int n, data; scanf("%d", &n); for(int i = 1; i <= n; i++){ scanf("%d", &data); insert_node(&root, data); } dfs(root); return 0; }
输入: 5 5 4 1 3 2
输出: 1 2 3 4 5
|