2019 - 2020 - 1 실험 8 보고서 과정: 반: 1823 이름: 조 천 호 학 번: 20182327 실험 교사: 왕 지 강 실험 날짜: 2019 년 11 월 7 일 필수/선택 과목: 필수 1. 실험 내용
1. 교재 PP 16.1 을 참고 하여 체인 트 리 LinkedBinary Tree 의 실현 (getRight, contains, toString, preorder, postorer)
을 완성 합 니 다. JUnit 또는 자체 구동 류 를 작성 하여 자신 이 실현 한 LinkedBinary Tree 를 테스트 하고 테스트 코드 를 제출 하여 캡 처 를 실행 합 니 다. 전체 화면 에 자신의 학 번 정 보 를 포함 해 야 합 니 다. 수업 시간 에 코드 를 코드 위탁 관리 플랫폼 으로 보 냅 니 다.
2. LinkedBinary Tree 를 바탕 으로 (중 서, 선 서) 서열 구 조 를 바탕 으로 유일한 2 * 13658 나무 기능 을 실현 한다. 예 를 들 어 중 서 HDIBEMJNAFCKGL 과 후 서 ABDHIEJMNCFGKL 을 제시 하고 부도 중의 나무
를 구성한다. JUnit 또는 자체 드라이버 로 자신 이 실현 한 기능 을 테스트 하고 테스트 코드 를 제출 하여 캡 처 를 실행 합 니 다. 전체 화면 에 자신의 학 번 정 보 를 포함 해 야 합 니 다. 수업 시간 에 코드 를 코드 위탁 관리 플랫폼 으로 보 냅 니 다.
스스로 결정 트 리 를 설계 하고 실현 한다
테스트 코드 실행 캡 처 제출, 전체 화면, 자신의 학 번 정보 포함 수업 시간 에 코드 를 코드 위탁 관리 플랫폼 으로 보 냅 니 다.
4. 접미사 표현 식 을 입력 하고 트 리 를 사용 하여 접미사 표현 식 을 접미사 표현 식 으로 변환 하고 접미사 표현 식 과 계산 결 과 를 출력 합 니 다 (트 리 가 없 으 면 정상적으로 평 점 합 니 다. 트 리 를 사용 하면 작은 문제 가 있어 도 만점 을 줍 니 다)
테스트 코드 실행 캡 처 제출, 전체 화면, 자신의 학 번 정보 포함 2. 실험 과정 과 결과
실험 1:
import java.util.Iterator;
public class LinkedBinaryTreeTest {
public static void main(String[] args) {
LinkedBinaryTree linkedBinaryTree2 = new LinkedBinaryTree(20);
LinkedBinaryTree linkedBinaryTree6 = new LinkedBinaryTree();
LinkedBinaryTree linkedBinaryTree1 = new LinkedBinaryTree(18, linkedBinaryTree6, linkedBinaryTree2);
LinkedBinaryTree linkedBinaryTree4 = new LinkedBinaryTree(23);
LinkedBinaryTree linkedBinaryTree5 = new LinkedBinaryTree(27);
LinkedBinaryTree linkedBinaryTree3 = new LinkedBinaryTree(152, linkedBinaryTree5, linkedBinaryTree4);
LinkedBinaryTree linkedBinaryTree = new LinkedBinaryTree(460, linkedBinaryTree1, linkedBinaryTree3);
Iterator preTree = linkedBinaryTree.iteratorPreOrder();
Iterator postTree = linkedBinaryTree.iteratorPostOrder();
System.out.println(" ");
System.out.println(linkedBinaryTree.toString());
System.out.println(" " + linkedBinaryTree.getRight());
System.out.println((" " + linkedBinaryTree.getLeft()));
System.out.println((" " + linkedBinaryTree.getHeight()));
System.out.println(" 460: " + linkedBinaryTree.contains(460));
System.out.println(" ");
linkedBinaryTree.toPreString();
System.out.println(" ");
linkedBinaryTree.toPostString();
}
실험 2:
public class RunInferenceTree {
public static void main(String[] args) {
InferenceTree preIn = new InferenceTree();
LinkedBinaryTree linkedBinaryTree = preIn.generate0("ABDHIEJMNCFGKL","HDIBEMJNAFCKGL");
System.out.println(" :");
System.out.println(linkedBinaryTree.toString());
}
실험 3: import java. io. FileNotFoundException;public class RunDecisionTree {public static void main (String [] args) throws FileNotFoundException {System. out. println ("작은 테스트 를 하 게 해 주세요"); DecisionTree expert = new DecisionTree ("C:\\Users\12441\\Desktop\game\\input. txt"); expert. evaluate (); System. out. println ("의사 결정 트 리 인쇄 는 다음 과 같 습 니 다:"); System. out. println (expert. getTree ();}
실험 4: import java. util. Scanner; import java. util. Stack; public class infixToSuffix {/접미사 표현 식 을 입력 하고 트 리 를 사용 하여 접미사 표현 식 을 접미사 표현 식 으로 변환 합 니 다. private Stack treeExpression;//연산 자 스 택 private Stack ope;//연산 자 스 택 public infixToSuffix () {treeExpression = new Stack (); ope = new Stack ();}private ExpressionTree getOperand (Stack treeExpression) {ExpressionTree temp; temp = treeExpression. pop (); return temp;} public ExpressionTree getPostfixtTree (String expression) {/이 진 트 리 ExpressionTree operand 1, operand 2; char operator; String tempToken; Scanner parser = new Scanner (expression); while (parser. hasNext ()){tempToken = parser. next (); operator = tempToken. charat (0); if (operator = = '+') | | (operator = '-') | (operator = ') | | (operator =') | (operator = = '/')) {if (ope. empty () ope. push (tempToken);/기 호 를 저장 하 는 스 택 이 비어 있 을 때 바로 스 택 else {String a = ope. peek () + ";//String 형 으로 전 환 된 데 이 터 는 equals 방법 으로 판단 할 수 있 습 니 다. 그렇지 않 으 면 영원히 false if (((a. equals ("+") | (a. equals ("-") & (operator = ') | (operator ='/') ope. push (tempToken);//얻 은 기호의 우선 순위 가 스 택 상단 요소 보다 클 때 스 택 else {String s = String. value Of (ope. pop (); char temp = s. charat (0); operand 1 = getOperand (treeExpression), operand 2 = getOperand (treeExpression), treeExpression. push (new ExpressionTree (1, temp, 0), operand 2, operand 1), ope. push (operator),}//얻 은 기호의 우선 순위 가 스 택 상단 요소 나 우선 순위 보다 작 을 때 디지털 스 택 에서 두 개의 연산 수가 나 와 새로운 트 리 스 택 을 형성 합 니 다} else treeExpression.push(new ExpressionTree(new ExpressionTreeOp (2,' ',Integer.parseInt(tempToken)), null, null)); } while(!ope.empty()){ String a = String.valueOf(ope.pop()); operator = a.charAt(0); operand1 = getOperand(treeExpression); operand2 = getOperand(treeExpression); treeExpression.push(new ExpressionTree (new ExpressionTreeOp(1, operator, 0), operand2, operand1)); } return treeExpression.peek(); } public String getTree() { return (treeExpression.peek()).printTree(); } public int getResult(){ return treeExpression.peek().evaluateTree(); } public void PostOrder() { treeExpression.peek().toPostString(); } public static void main(String[]{String again = ""; Scanner scan= new Scanner (System. in); infixToSuffix list = new inininString again = """;; Scanner scanner scan= new Scanner = new Scanner (System. in); ininfixToSuffix list = new ininininininininfixToSuffix (); do {System. out. println("접두사 표현 식 을 입력 하 십시오: "+"eg. (3 + 4 * 5) "); String exp = new inininininfixToToSuffix ()); 문자열 exp = scan. nextLine. nextLine (); list. getPostPostfix Tree. out. printtl(System. out. print(list. get. print(list. getTree)); System. out.).; System. out. println ("계산 결 과 는:"), System. out. println (list. getResult (), System. out. println ("계속 하 시 겠 습 니까?"), again = scan. nextLine (),} while (again. equalsIgnoreCase ("y"),} 3. 실험 과정 에서 발생 한 문제 와 해결 과정
문제 1: 대기 열 헤더 의 데 이 터 를 호출 할 때 빈 포인터 오류 가 발생 했 습 니 다
문제 해결 방법: 드라이버 코드 를 다시 편집 하고 호출 이 초기 화 되 었 는 지 확인 합 니 다.
문제 2: 실험 3 을 할 때 인쇄 하 는 과정 은 모두 0 이 고 과거 테스트 2 로 돌아 가 실험 2 도 오류 가 발생 한 것 을 발견 했다.
문제 2 해결 방법: 단일 디 버 깅 을 통 해 텍스트 파일 에서 오류 가 발생 한 것 을 발 견 했 습 니 다. 첫 번 째 문 자 는 빈 칸 으로 설정 되 어 문자 캡 처 에 문제 가 생 겼 습 니 다. 앞으로 코드 실천 에서 모든 문자 의 존재 의 미 를 진지 하 게 고려 해 야 한 다 는 것 을 알려 주 었 습 니 다.
문제 3: assert Equals 에 횡선 이 나 타 났 습 니까?
문제 세 가지 해결 방법: 앞에서 정 의 된 실제 부분 과 허 부 는 모두 double 형 입 니 다. 인터넷 에서 찾 아 보 니 assert Equals 는 int 형, long 형 또는 boolean 형 만 지원 하 는 것 을 발 견 했 습 니 다. 아무튼 이때 (double, double) 형 을 지원 하지 않 으 면 어떻게 해 야 할 지 생각 했 습 니 다. 그 러 다가 지원 (string, string) 형 을 발 견 했 습 니 다. 그러면 숫자 를 더 하 겠 습 니 다. "문자열 이 되 어 다음 방법 에 toString 방법 을 추가 하여 문자열 로 바 꾸 면 assertEquals 의 횡선 이 사라 집 니 다.
기타 (깨 달 음, 사고 등) 어떤 나무 든 이름 은 링크 드 비 나 리 트 리 입 니 다. 트 리 를 만 드 는 데 목적 을 달성 하 는 것 은 현재 프로 그래 밍 의 주류 가 되 었 습 니 다. 비록 제 가 완전히 파악 할 수 없 지만 배 울 수 있 는 것 은 좋 은 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: