이진 트리 인쇄를위한 재귀 방법 이해

NealR

YouTube 자습서 의 코드 단계별로 진행 중이며 재귀 인쇄 기능을 많이 이해할 수 없습니다.

    public void Print(Node N, ref string s)
    {
        if (N == null) { N = top; }
        if (N.left != null)
        {
            Print(N.left, ref s);
            s = s + N.value.ToString().PadLeft(3);
        }
        else
        {
            s = s + N.value.ToString().PadLeft(3);
        }
        if (N.right != null)
        {
            Print(N.right, ref s);
        }
    }

트리를 채우기 위해 다음 정렬되지 않은 배열을 사용하고 있습니다.

int[] unsortedArray = new int[] {5, 17, 11, 24, 3, 18, 9};

나는 Print메소드 의 첫 번째 패스를 통해 top값이 5와 같다는 것을 이해합니다. 그런 다음 프로그램은 첫 번째 조건으로 떨어지고이 재귀 호출을 실행합니다.

Print(N.left, ref s);

입력 매개 변수 Node N는 이제 트리에서 가장 낮은 값인 루트의 왼쪽 노드 null이므로 왼쪽 노드는 다음 과 같은 else조건으로 떨어집니다.

else
{
     `s = s + N.value.ToString().PadLeft(3);    
}

내가 길을 잃은 곳은 다음에 일어날 일입니다. 나에게는이 노드에 올바른 리프가 없기 때문에 프로그램이 if(N.right !=null)조건을 평가 한 다음 Print메서드 를 종료하는 것 같습니다.

대신 코드는를 평가 한 if다음 Print(N.left, ref s);첫 번째 조건 줄로 이동합니다 .

        if (N.left != null)
        {
            Print(N.left, ref s);
            s = s + N.value.ToString().PadLeft(3);
        }

처음으로 재귀를 탐구합니다. 왜 이것이 왜 나에게 말할 수 있습니까?

NealR

이 게시물을 작성한 후 답변이 매우 명확 해졌습니다. 프로그램이이 줄로 다시 점프하는 이유

Print(N.left, ref s);

재귀 호출이 시작된 곳입니다. 입력 매개 변수에 Node N더 이상 올바른 노드가 포함되지 않으면 프로그램은 해당 메소드 반복을 종료합니다. 누군가가 이것을 더 잘 설명 할 수 있으므로 잠시 동안 선택된 답변없이 게시물을 남겨 두겠습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

주어진 재귀 문제를 이해하는 방법?

분류에서Dev

재귀를 사용하여이 이진 트리를 가로 지르는 방법은 무엇입니까?

분류에서Dev

재귀 방법이 4 번 인쇄 됨

분류에서Dev

이진 트리를 생성하는 재귀 메서드를 만드는 방법은 무엇입니까?

분류에서Dev

이진 트리에서 요소의 발생 수를 가져 오는 재귀 방법

분류에서Dev

이진 트리의 최대 높이에 대한 재귀 코드

분류에서Dev

이진 트리 소멸자에 대한 재귀 호출

분류에서Dev

이진 트리를 생성하는 재귀 함수

분류에서Dev

C에서 이진 트리를 나타내는 재귀 함수

분류에서Dev

재귀를 사용하는 이진 트리 균형 검사?

분류에서Dev

이진 검색 트리의 내용을 재귀 적으로 인쇄합니까?

분류에서Dev

이진 트리에서 재귀 검색

분류에서Dev

재귀 검색 이진 트리 C #

분류에서Dev

이진 검색 트리 재귀 혼란

분류에서Dev

재귀를 트램폴린으로 변환하는 방법 이해

분류에서Dev

포인터에 대한 포인터로 이진 트리 재귀 삽입

분류에서Dev

이진 트리 자바 스크립트의 최대 깊이를 검색 할 때 재귀 함수가 계산을 유지하는 방법

분류에서Dev

이진 트리가 균형을 이루는 지 찾는 데있어 재귀를 이해하지 못함

분류에서Dev

이진 트리가 균형을 이루는 지 찾는 데있어 재귀를 이해하지 못함

분류에서Dev

이 트리거 재귀 정신 타격을 해결하는 방법?

분류에서Dev

(재귀 적) 쿼리를 몇 번이고 반복하는 방법?

분류에서Dev

파이썬에서 재귀를 처리하는 방법?

분류에서Dev

재귀 함수를위한 트램폴린 최적화 이해

분류에서Dev

재귀 설명을 사용한 이진 트리 탐색 (파이썬)

분류에서Dev

호출이 MIPS의 이진 트리와 유사한 재귀 프로 시저

분류에서Dev

재귀없이 inorder / pre / post /를 사용하여 이진 검색 트리를 탐색하는 방법은 무엇입니까?

분류에서Dev

트리 탐색의 재귀 이해

분류에서Dev

재귀 논리 이해

분류에서Dev

주어진 깊이의 완전한 이진 트리를 재귀 적으로 생성

Related 관련 기사

  1. 1

    주어진 재귀 문제를 이해하는 방법?

  2. 2

    재귀를 사용하여이 이진 트리를 가로 지르는 방법은 무엇입니까?

  3. 3

    재귀 방법이 4 번 인쇄 됨

  4. 4

    이진 트리를 생성하는 재귀 메서드를 만드는 방법은 무엇입니까?

  5. 5

    이진 트리에서 요소의 발생 수를 가져 오는 재귀 방법

  6. 6

    이진 트리의 최대 높이에 대한 재귀 코드

  7. 7

    이진 트리 소멸자에 대한 재귀 호출

  8. 8

    이진 트리를 생성하는 재귀 함수

  9. 9

    C에서 이진 트리를 나타내는 재귀 함수

  10. 10

    재귀를 사용하는 이진 트리 균형 검사?

  11. 11

    이진 검색 트리의 내용을 재귀 적으로 인쇄합니까?

  12. 12

    이진 트리에서 재귀 검색

  13. 13

    재귀 검색 이진 트리 C #

  14. 14

    이진 검색 트리 재귀 혼란

  15. 15

    재귀를 트램폴린으로 변환하는 방법 이해

  16. 16

    포인터에 대한 포인터로 이진 트리 재귀 삽입

  17. 17

    이진 트리 자바 스크립트의 최대 깊이를 검색 할 때 재귀 함수가 계산을 유지하는 방법

  18. 18

    이진 트리가 균형을 이루는 지 찾는 데있어 재귀를 이해하지 못함

  19. 19

    이진 트리가 균형을 이루는 지 찾는 데있어 재귀를 이해하지 못함

  20. 20

    이 트리거 재귀 정신 타격을 해결하는 방법?

  21. 21

    (재귀 적) 쿼리를 몇 번이고 반복하는 방법?

  22. 22

    파이썬에서 재귀를 처리하는 방법?

  23. 23

    재귀 함수를위한 트램폴린 최적화 이해

  24. 24

    재귀 설명을 사용한 이진 트리 탐색 (파이썬)

  25. 25

    호출이 MIPS의 이진 트리와 유사한 재귀 프로 시저

  26. 26

    재귀없이 inorder / pre / post /를 사용하여 이진 검색 트리를 탐색하는 방법은 무엇입니까?

  27. 27

    트리 탐색의 재귀 이해

  28. 28

    재귀 논리 이해

  29. 29

    주어진 깊이의 완전한 이진 트리를 재귀 적으로 생성

뜨겁다태그

보관