티스토리 뷰
문제
이진 트리가 주어지면 루트 노드부터 레벨별로 프린트 하시오. 프린트 방식은 홀수 레벨은 왼쪽에서 오른쪽으로, 짝수 레벨은 오른쪽에서 왼쪽으로 프린트 하시오. 루트노드는 레벨 1입니다. 예제를 보시오.
<예제> 1 / \ 2 3 / \ / \ 4 5 6 7
프린트: 1, 3, 2, 4, 5, 6, 7. |
너무너무 이해가 되지 않는 오늘의 문제!
======
이해가 되지 않던 이유
1) 예제에서 왼쪽 이미지를 뜻하는 걸 오른쪽 이미지로 보고 이게 뭐인가 했다.
2) 노드레벨을 루트노드 레벨1(홀), 노드1 레벨2(짝), 노드2 레벨3(홀)로 봐야 하는데 맨 앞에 써있는 숫자를 노드레벨로 착각하여 홀짝짝으로 계산 한 나의 실수.
======
결론 : 나의 풀이
C#의 윈폼을 활용했다.
textBox1에 이진 트리가 주어진다.
프린트 버튼을 클릭하면 결과가 나온다.
나의 코드 private void button1_Click(object sender, EventArgs e) { int a = 1; // 라인 수
// textBox1을 라인별로 쪼개서 담기 string[] sarray = textBox1.Text.Split(new string[] { "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
// textBox1 라인 수 만큼 for(int i=0;i<textBox1.Lines.Length;i+=2) { // textBox1의 i라인의 문자열 쪼개기 string[] s = sarray[i].Split(' '); if (a%2 ==0) // 짝수 { // 오른쪽에서 왼쪽으로, 마지막에서 첫번째 순 for(int x=s.Length-1; x>=0 ;x--) { if (label1.Text.Length > 0) { label1.Text += ","; }
label1.Text += s[x].ToString(); } } else // 홀수 { // 왼쪽에서 오른쪽으로, 첫번째에서 마지막 순 for (int x = 0; x <s.Length; x++) { if (label1.Text.Length > 0) { label1.Text += ","; }
label1.Text += s[x].ToString(); } }
a++; } } |