LeetCode 행복 브러시 제목 오십사일 - 각 노드에서 지식 일을 116 채우기 다음 마우스 오른쪽 단추로 포인터를 탐구하는 행복

각 노드에서 116 채우기 다음 마우스 오른쪽 포인터
매질

당신은 모든 잎이 같은 수준에있는 완벽한 이진 트리를 부여하고, 모든 부모는 두 아이가 있습니다. 이진 트리는 다음과 같이 정의되어있다 :

구조체 노드 {
  INT 발;
  노드 * 왼쪽;
  노드 * 권리;
  다음 노드 *;
}

그 바로 옆에 노드를 가리 키도록 다음의 각 포인터를 채 웁니다. 더 바로 옆에 노드가없는 경우, 다음 포인터로 설정해야합니다  NULL.

처음에는 모두 다음 포인터로 설정됩니다  NULL.

 

후속 :

  • 당신은 일정한 여분의 공간을 사용할 수 있습니다.
  • 재귀 접근 방식은이 문제에 대한 여분의 공간으로 간주하지 않습니다 암시 스택 공간을 가정 할 수있다, 괜찮습니다.

 

예 1 :

입력 : 루트 = [1,2,3,4,5,6,7]
출력 : [1, # 3, #, 4,5,6,7- #]
설명 : 위의 완벽한 이진 트리 (그림 A)을 감안할 때, 함수는 단지 그림 B에처럼, 그 바로 옆에 노드를 가리 키도록 다음의 각 포인터를 채워야한다 '는 다음 포인터로 연결로 출력하여, 레벨 순서에 연재 # '각 레벨의 끝을 의미.

 

제약 :

  • 주어진 트리의 노드의 수보다 작다  4096.
  • -1000 <= node.val <= 1000

첫 번째 코드가 올바른 값을 얻을 수 없다,하지만 난 문제를 찾을 수없는, 확인 필요

두 번째는 HH의 C ++ 코드에서, 내가 무엇을있다 방법을 이해하지 않습니다

"" "
# 노드에 대한 정의.
클래스 노드 (객체) :
    데프 (자동, 발 = 0, 왼쪽 = 없음, 권리 = 없음, 다음 = 없음) __ __init :
        self.val = 브로
        self.left = 왼쪽
        self.right = 오른쪽
        self.next = 다음
"" " 
#의 클래스 솔루션 (객체) : 
#      데프 연결 (자체, 루트) : 
#          " "" 
#          : 유형 루트 : 노드 
#          : RTYPE : 노드 
#          "" " 
#          하지 않을 경우 루트 : 리턴 
#          nextLevelFirst = 루트 
#          동안 (root.left) : 
#              nextLevelFirst = root.left 
#              동안 (루트) : 
#                  root.left.next = root.right 
#                  경우 root.next = 없음! root.right.next = root.next.left 
#                  루트 = root.next의 
#             루트 = nextLevelFirst

클래스 솔루션 (객체) :
     데프 연결 (자기 루트) :
         "" "
        : 유형 루트 : TreeLinkNode
        : RTYPE : 아무것도
        "" " 
        만약  하지 루트 : 반환 없음
        nextLevelFirst = 루트
         동안 root.left :
            nextLevelFirst = root.left
             동안 루트 :
                root.left.next = root.right
                 경우 root.next = 없음! root.right.next = root.next.left
                루트 = root.next
            루트 = nextLevelFirst
// 저자 : Huahua 
클래스 솔루션 {
 공개 :
   무효 연결 (TreeLinkNode * 루트) {
     경우 (루트!) 반환 ;
    경우 (루트 레벨한다! 왼쪽 || 루트 레벨 하였다 오른쪽) ;
    루트 -한다 왼쪽한다 다음 = 루트 레벨 및 한다 오른쪽;
    경우 (루트 레벨 및 한다 옆)
      루트 -한다 우측한다 다음 = 루트 레벨한다하는 next- 및 한다 왼쪽;
    연결 (루트 - & 한다 왼쪽);
    연결 (루트 - & 하였다 오른쪽);
  }
};

 

추천

출처www.cnblogs.com/Marigolci/p/11987009.html