2016-11-18 4 views
-1

나는 자바를 배우고있다. 나는이 코드를 어딘가에서 보았다. 다음 코드가 올바르게 통과합니까? 결과 목록이 올바르게 호출되고 있습니까? 그것이 제대로 추가 될 것인가? 그것이의 순서 탐색을 수행 여부를 묻는으로순회 이진 트리

public void traverse(Node<T> input, List<T> resultlist) { 
    if (input != null) { 
     traverse(input.getLeftNode(), resultlist) 

     resultlist.add(input.getValue()) 

     traverse(input.getRightNode(), resultlist) 
    } 
} 
+0

중간 줄에는'result'가'resultlist' 여야한다고 생각합니다. – nvioli

+1

[이진 트리 용 순차 반복자]의 가능한 복제본 (http://stackoverflow.com/questions/12850889/in-order-iterator-for-binary-tree) – rbucinell

+0

노드 클래스 –

답변

1

(을 어떻게해야 무엇입니까), 나는 당신이 단지 순회의 차이를 이해하지 못하는 같은데요 ...

프라이머 : 재귀 :

이 진정으로이 문제를 이해하기 위해서, 당신은 데이터 구조의 중요한 측면을 이해할 필요가있다. 이것은 당신이 파악해야 할 것입니다. 그것은 조금 걸릴 수 있으며, 다른 연습을 시도한 후. 그냥 클릭합니다. 여기

이가 시작하기 위해 자원 :

http://www.programmerinterview.com/index.php/recursion/explanation-of-recursion/

이제 다음과 같이 트리 탐색의 질문에오고, 일반적인 규칙은 다음과 같습니다

예약 주문 :

traversalFunction(Node) 
    doStuffWithNode(Node) //prechild traversal 
    traversalFunction(Node.left) 
    traversalFunction(Node.right) 

에서 주문

traversalFunction(Node) 
    traversalFunction(Node.left) 
    doStuffWithNode(Node) //within child traversal 
    traversalFunction(Node.right) 

후 주문 :

traversalFunction(Node) 
    traversalFunction(Node.left) 
    traversalFunction(Node.right) 
    doStuffWithNode(Node) //post child traversal 

그래서 귀하의 질문에 대답하는 ... 당신은 왼쪽과 사이에 노드에 대한 작업을 수행하는 방법이있는 경우 오른쪽 횡단 순회 트래버스입니다. 그것이 당신이하는 일입니다.

당신은 여기 순회에 대한 자세한 정보를 찾을 수 있습니다

: 당신이 정말로 당신의 노드 클래스 또는 아무것도에 정보를 입력하지 않았기 때문에 https://en.wikipedia.org/wiki/Tree_traversal

지금 코드의 나머지의 정확성에, 나는 확실하지 오전 .