검 지 Offer 27. 이 진 트 리 의 거울
7176 단어 데이터 구조의 실현면접시험
4
/ 27 / \ / 1 3 6 9 미 러 출력:
4
/ 7 2 / \ / 9 6 3 1
1:
:root = [4,2,7,1,3,6,9]
:[4,7,2,9,6,3,1]
:
0 <= <= 1000
이 문 제 는 사실 어렵 지 않 습 니 다. 조금 보고 생각 이 났 습 니 다. 보면 어렵 지 않 습 니 다. 처음에 도 이 진 트 리 의 문제 에 놀 랐 습 니 다. 자세히 생각해 보면 그의 거울 을 구 하 는 것 은 그의 left 노드 와 right 노드 를 매번 교환 하면 되 는 것 이 아 닙 니까? 이것 을 깨 닫 고 코드 를 쓰기 시 작 했 습 니 다. 제 가 여기 서 먼저 생각 한 것 은 재 귀 하 는 방법 입 니 다.매번 들 어 오 는 노드 는 루트 노드 로 볼 수 있 기 때문에 하 는 작업 은 매번 left 와 right 를 교환 할 때 주의해 야 할 일 을 재 귀적 으로 끝 내 는 조건 입 니 다. 그의 left 와 right 가 모두 비어 있 을 때 루트 로 돌아 가면 됩 니 다. 만약 에 루트 노드 가 비어 있다 고 판단 하면 null 로 돌아 가면 됩 니 다. 왜 그런 지 잘 생각해 보 세 요.생각 이 통 하 겠 죠. 마지막 에 이런 방법 은 문 제 를 보지 않 고 생각해 낸 것 입 니 다. 지나 고 나 서 문 제 를 풀 고 보조 스 택 으로 하 는 방법 도 있 습 니 다. 전에 들 어 본 적 이 있 습 니 다. 재 귀적 으로 해결 할 수 있 는 것 은 모두 스 택 을 지 키 는 것 으로 해결 할 수 있 습 니 다. 저 는 재 귀적 인 방법 을 썼 습 니 다. 느낌 도 정상 적 인 방법 인 것 같 습 니 다. 코드 를 붙 입 니 다.
class TreeNode {
public $val = null;
public $left = null;
public $right = null;
function __construct($value) { $this->val = $value; }
}
class Solution {
/**
* @param TreeNode $root
* @return TreeNode
*/
function mirrorTree($root) {
if ($root->left == null && $root->right == null) {
return $root;
}
$temp = $root->left;
$root->left = $root->right;
$root->right = $temp;
$this->mirrorTree($root->left);
$this->mirrorTree($root->right);
return $root;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 삽입 정렬 분석사실 저 는 기초 가 부족 합 니 다. 최근 에 심심 하면 서 다른 사람 을 가 르 칠 때 많은 것 을 알 게 되 었 습 니 다. 면접 에서 자주 만 나 는 삽입 순 서 를 분석 해 드 리 겠 습 니 다.쓸 줄 만 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.