九度oj 题目1467:二叉排序树

题目描述:

        二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:


        1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
        2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
        3. 左、右子树本身也是一颗二叉排序树。


  现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。

输入:

输入包含多组测试数据,每组测试数据两行。
第一行,一个数字N(N<=100),表示待插入的节点数。
第二行,N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过10^8。

输出:

输出共N行,每次插入节点后,该节点对应的父亲节点的关键字值。

样例输入:
5
2 5 1 3 4
样例输出:
-1
2
2
5
3

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <string>
 5 #define N 109
 6 
 7 struct Node
 8 {
 9     int key;
10     int left;
11     int right;
12 };
13 
14 int tree[N];
15 Node treeNode[N];
16 
17 int main(int argc, char const *argv[])
18 {
19     int n;
20     while(scanf("%d",&n) != EOF) {
21         for(int i = 0; i < n; i++) {
22             scanf("%d",&tree[i]);
23         }
24         treeNode[0].key = tree[0];
25         treeNode[0].left = -1;
26         treeNode[0].right = -1;
27 
28         printf("%d
",-1);
29         for(int i = 1; i < n; i++) {
30             treeNode[i].key = tree[i];
31             treeNode[i].left = -1;
32             treeNode[i].right = -1;
33             int lastTemp = -1;
34             int temp = 0;
35             bool dir = false;
36             while(temp != -1) {
37                 if(tree[i] < treeNode[temp].key) {
38                     lastTemp = temp;
39                     temp = treeNode[temp].left;
40                     dir = false;
41                 }
42                 else {
43                     lastTemp = temp;
44                     temp = treeNode[temp].right;
45                     dir = true;
46                 }
47             }
48             if(dir == false) {
49                 treeNode[lastTemp].left = i;
50             }
51             else {
52                 treeNode[lastTemp].right = i;
53             }
54             
55             printf("%d
",tree[lastTemp]);
56             
57         }
58 
59     }
60     return 0;
61 }

利用数组模拟一棵树,1A

原文地址:https://www.cnblogs.com/jasonJie/p/5684388.html