postfix식을 입력받아서 stack으로 tree를 만들었는데 레벨별로 출력하고 싶어요

조회수 1082회

이미지

이미지

import java.util.Scanner;

public class week7 {

public static void main(String[] args) 
{
    Scanner sc = new Scanner(System.in);
    String a = sc.next();

    Stack<Node> stack = new Stack<Node>(a.length());

    for(int i=0;i<a.length();i++)
    {
        if(a.charAt(i)!='*'&&a.charAt(i)!='/'&&a.charAt(i)!='+'&&a.charAt(i)!='-') //숫자면
        {
            stack.push(new Node(a.charAt(i))); //스택에 집어넣음
        }
        else //문자면
        {
            Node Rightop = stack.pop();
            Node Lefttop = stack.pop();
            stack.push(new Node(a.charAt(i),Lefttop,Rightop));
        }
    }

}

public static class Node
{
    public Node(char value)
    {
        this.Data=value;
        this.Right=null;
        this.Left=null;
    }

    public Node(char data,Node left,Node right)
    {
        Data = data;
        Left = left;
        Right = right;
    }

    public char Data;
    public Node Left;
    public Node Right;
}

}

postfix String을 받아서 tree를 만들었는데 이걸 레벨별로 출력하고 싶습니다.

근데 어떻게 해야될지 감도 안오고 코드도 못짜겠어서 ㅜㅜㅜ 질문드립니다.

일단 해당 데이터값,왼쪽노드,오른쪽 노드를 갖고있는 노드객체를 만들었습니다.

그리고 postfix 스트링에서 숫잘 하나씩 계속 스택에 넣다가 (숫자는 1~9만 입력되어요)

연산자가 나오면 스택에서 두개를 꺼내(pop) 문자의 왼,오른쪽에 대입하고

다시 스택에 push 하는 식으로 만들었습니다 (아마 말보다 코드 보시는게 이해가 되실거에요)

그래서 만든걸 이미지로 표현한게 첫번째 사진의 왼쪽 그림인데

(예제로 523*3*+ 를 입력한거에요)

이걸 레벨별로 출력하고 싶은데 도데체 어떻게 해야할지 모르겠어서 부탁드립니다..

첫번째 사진을 예로들면

+/5*/*3/23 이런식으로 출력을 하고싶습니다..

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)