2016-10-28 3 views
1

표현식 트리가 주어질 때 문자열 표현식을 만드는 데 문제가 있습니다. 내 식 트리가 (출력 콘솔에서)이 보이는 경우표현식 트리가 주어진 경우 문자열 표현식 만들기

(*(+(5)(-(2)(3)))(6)) 

어떻게 정상적인 형식으로 식을 작성하려면이 통과하는 방법을 만들려면 어떻게해야합니까? 예를 들어, 같은

(2 - 3 + 5) * 6 

상기와 같이 I는 (실제 식 트리 또는 식 트리의 캐릭터의 방향으로 작동되어야한다 (* (+ (5) (- (2) (3))) (6))).

답변

0

접두어 - 중위 변환 알고리즘을 사용해야합니다.

표현식 트리 문자열이 접두사 형식이므로 중급어 형식으로 지정해야합니다.

입력 문자열에서 모든 중괄호를 제거 할 수 있습니다. 그렇게하면 더 쉬울 것입니다.

+0

감사합니다. 나는 당신에게 투표를했으나 평판이 낮기 때문에 나타나지 않습니다. 이 스택을 사용하는 것이 가장 좋은 방법이라고 생각하십니까? –

+0

나는 너의 문제를 해결했다. 그것은 나를 위해 충분하다. 그리고 스택은 LIFO 속성 때문에 이러한 유형의 문제를 해결하는 가장 좋은 방법입니다. –

0

약이 문서를 읽는 것이 좋습니다.

차량 기지 알고리즘은 : https://en.wikipedia.org/wiki/Shunting-yard_algorithm

이 알고리즘은 예를 들어 당, 괄호 사이의 함수는 먼저 자신의 "우선 순위 파워"에 따라 스태킹 '토큰'에 관한 것입니다. 즉이 읽기에 관해서는 :

https://en.wikipedia.org/wiki/Order_of_operations

http://introcs.cs.princeton.edu/java/11precedence/을 내가 도움이 희망

(이것은 하나의 프로그램에 대한 특정)입니다.

좋은 하루 보내십시오. :)