제가 작업하고있는이 프로젝트는 한자리수의 피연산자와 연산자가 모두 char 유형으로 표현 된 문자열로 표현식 트리를 구성해야합니다. 나는 임 플리 멘 테이션을했고 그 시점까지의 프로그램은 잘 작동한다. inorder, preorder 및 postorder 순회를 올바른 방법으로 인쇄 할 수 있습니다.표현 트리를 평가하십시오
마지막 부분은 표현 트리를 evaulating하기를 요구합니다. 매개 변수는 표현식 트리 "t"와 루트 "root"입니다. 표현 트리는 (3 + 2) + (6 + 2)입니다. 13과 같습니다. 대신 11로 답을 얻습니다. 분명히 나는 여기서 뭔가를 놓치고 책상을 상대로 머리를 때리는 일을 모두 끝냈습니다.
누군가가 올바른 방향으로 나를 가리킬 수 있으면 크게 감사하겠습니다.
(I는 또한 테스트 그리고 난이 방법의 작업을 얻을 때 다른 사업자에 추가합니다이 시점에서 참고.) 실제 트리없이
public int evalExpression(LinkedBinaryTree t, BTNode root) {
if(t.isInternal(root)) {
int x = 0, y = 0, value = 0;
char operator = root.element();
if(root.getLeft() != null)
x = evalExpression(t, t.left(root));
if(root.getRight() != null)
y = evalExpression(t, t.right(root));
if(operator == '+') {
value = value + Character.getNumericValue(x) + Character.getNumericValue(y);
}
return value;
} else {
return root.element();
}
}
문제가 무엇인지 알아 냈습니다. else 블록의 값은 Character.getNumericValue (root.element())를 반환해야합니다. 모든 것이 지금처럼 작동합니다. – Phronima