2016-09-21 2 views
-1

BST에 대한 순회 탐색 개념을 이해하고 있지만 재귀가 어떻게 작동하는지 혼란 스럽습니다. print 문과 매개 변수로서의 root.right를 사용한 재귀 호출이 어떻게 실행될 지 혼란스러워합니다. inOder (root.left)는 BST에서 가장 낮은 값으로 검색되도록 계속 호출되지만 null에 도달하면 if 문에 도달 할 수 없으므로 올바른 노드로 다시 이동할 수 없습니다. if 문에서 코드의 핵심 부분에 어떻게 도달 할 수 있는지 알고 싶습니다.재귀 작업을 사용하는 BST 트래버스는 정확히 어떻게 수행됩니까?

public void inOrder(TreeNode root) { 
    if(root != null) { 
     inOrder(root.left); 
     System.out.printf("%d ",root.data); 
     inOrder(root.right); 
    } 
} 

답변

0

재귀 스택을 이해하는 것이 중요합니다. 왼쪽에있는 모든 방법으로 메모리에 별도의 메소드 호출이 저장됩니다. 왼쪽 방향으로 통화가있을 때만 인쇄가 시작됩니다. 먼저 왼쪽 자식을 인쇄 한 다음 부모를 인쇄 한 다음 오른쪽 자식을 왼쪽 하단에서 인쇄합니다.

관련 문제