码迷,mamicode.com
首页 > 编程语言 > 详细

二叉排序树

时间:2018-02-05 18:51:06      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:div   for   bubuko   ros   img   gpo   pos   格式化   lib   

题目截图:

技术分享图片

 

 

思路:

   参照我的另一篇博客

 

 

代码如下:

 1 /*
 2     二叉排序树 
 3 */
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <math.h>
 8 #include <stdlib.h>
 9 #include <time.h>
10 #include <stdbool.h>
11 
12 // 二叉树结构体 
13 typedef struct _node {
14     int data;                // 数据域 
15     struct _node* left;        // 左子树 
16     struct _node* right;    // 右子树 
17 } node; 
18 
19 // 在以 root 为根结点中插入结点 x,pre 储存父结点 
20 void insert(node** root, node* pre, int x) {
21     if((*root) == NULL) {    // 若根结点为空,表示已经找到插入位置 
22         // 新建结点 
23         node* newNode = (node*)malloc(sizeof(node));
24         newNode->data = x;
25         newNode->left = newNode->right = NULL;
26         (*root) = newNode;    // 插入结点 
27         if(pre == NULL) {    // 输出父结点 
28             printf("-1"); 
29         } else {
30             printf("%d", pre->data);
31         }
32         return;
33     }
34     if(x == (*root)->data) {    // 树中已经有该结点 
35         return;
36     } else if(x < (*root)->data) {    // 值小于根结点的值,应插到左子树 
37         insert(&(*root)->left, *root, x);
38     } else {                        // 值大于根结点的值,应插到右子树 
39         insert(&(*root)->right, *root, x);
40     }
41 }
42 
43 int main() {
44     int N, i, x;
45     scanf("%d", &N);            // 结点个数 
46     node* root = NULL;
47     for(i=0; i<N; ++i) {
48         scanf("%d", &x);
49         insert(&root, root, x);    // 插入结点 
50         if(i != N-1) {            // 格式化输出 
51             printf("\n");
52         }
53     }
54 
55     return 0;
56 }

 

二叉排序树

标签:div   for   bubuko   ros   img   gpo   pos   格式化   lib   

原文地址:https://www.cnblogs.com/coderJiebao/p/HustTest04.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!