가 하위 트리의 루트이면서 제거할 값을 포함할 수 있는데, 그런 경우 해야 하는 작업을 한다.
➏
쉬운 경우부터 먼저 처리한다. 하나의 자식만 가진다면, 해당 자식을 반환한다.
➐
유지해야 하는
node
의
left
와
right
하위 트리를 잃어버리지 않도록
original
에
node
를 저장해둔다.
➑
먼저
node
=
node.right
를 사용해
node.right
를 루트로 하는 하위 트리에서 최솟값을 찾는다.
node
가 왼쪽 자
식이 있는 한 현재 가장 작은 값이 아니므로,
left
하위 트리가 없을 때까지 반복해서
node
를 이동시킨다. 이 작업
으로
original
의
right
하위 트리에서 최솟값을 찾는다.
➒
node
는
orignal
의
left
와
right
자식에 대한 새로운 루트가 될 것이다. 여기서는
original.right
에서 최솟값
을 제거한 결과를
node.right
의
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.
O’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
I wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
I’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
I'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.