강의로 돌아가기
Fedcba13

34점... 나옵니다. 이유를 정말 모르겠습니다. 부탁드립니다...

제발요... 이유를 모르겠습니다.
트리도 나름 잘 짠것 같은데 말이죠...

작성중인 코드―Solution.java
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
import java.util.ArrayList;
import java.util.HashMap;

class Solution {

    static ArrayList<Integer> pre;
    static ArrayList<Integer> post;

    public int[][] solution(int[][] nodeinfo) {
        pre = new ArrayList<>();
        post = new ArrayList<>();

        HashMap<Integer, Integer> t = new HashMap<>();

        for (int i = 0; i < nodeinfo.length; i++) {
            t.put(nodeinfo[i][0], i + 1);
        }

        for (int i = 0; i < nodeinfo.length; i++) {
            int tmp = nodeinfo[i][1];
            for (int j = 0; j < nodeinfo.length; j++) {
                if (tmp > nodeinfo[j][1]) {
                    int[] a = nodeinfo[j];
                    nodeinfo[j] = nodeinfo[i];
                    nodeinfo[i] = a;
                }
            }

        }

        Tree tree = new Tree();
        for (int i = 0; i < nodeinfo.length; i++) {
            tree.addNode(nodeinfo[i][0]);
        }

        tree.preOrder(tree.root);
        tree.postOrder(tree.root);

        int[][] answer = new int[2][nodeinfo.length];
        for (int i = 0; i < pre.size(); i++) {
            answer[0][i] = t.get(pre.get(i));
        }
        for (int i = 0; i < post.size(); i++) {
            answer[1][i] = t.get(post.get(i));
        }

        return answer;
    }

    public static class Node {

        private int value;
        private Node left;
        private Node right;

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }

        public Node getLeft() {
            return left;
        }

        public void setLeft(Node left) {
            this.left = left;
        }

        public Node getRight() {
            return right;
        }

        public void setRight(Node right) {
            this.right = right;
        }

    }

    public static class Tree {

        public Node root;

        public void addNode(int value) {

            if (root == null) {

                Node node = new Node();

                node.setValue(value);

                root = node; // root에 값이 없으면, root에 값을 넣는다.

            } else {

                // root가 존재할 경우, root 변경하기 위한 메소드 호출

                addNode(value, root);

            }

        }

        public void addNode(int value, Node root) {

            if (value <= root.getValue()) {

                if (root.getLeft() == null) {

                    Node node = new Node();

                    node.setValue(value);

                    root.setLeft(node);

                } else {

                    addNode(value, root.getLeft());

                }

            } else {

                if (root.getRight() == null) {

                    Node node = new Node();

                    node.setValue(value);

                    root.setRight(node);

                } else {

                    addNode(value, root.getRight());

                }

            }

        }

        public void preOrder(Node root) {

            if (root == null)

                return;

            pre.add(root.getValue());

            preOrder(root.getLeft());

            preOrder(root.getRight());

        }

        public void postOrder(Node root) {

            if (root == null)

                return;

            postOrder(root.getLeft());

            postOrder(root.getRight());

            post.add(root.getValue());

        }

    }

}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.