맞은 위치를 찾는다. 같은 재귀적 접근으로 이진 탐색 트리에서 값의 포함 여부를 확인할 수 있
다. 하지만, 실제로는 [코드
6
-
5
]는
while
루프를 통해 값을 찾는 더 단순한 방식으로 구현되
었다.
코드
6-5
BinaryTree
가 값을 포함하는지 결정하기
class BinaryTree:
def __contains__(self, target):
node = self.root
➊
while node:
if target == node.value:
➋
return True
if target < node.value:
➌
node = node.left
else:
node = node.right
➍
return False
➎
➊
root
에서 탐색을 시작한다.
➋
target
값이
node
값과 같으면 성공으로
True
를 반환한다.
➌
target
값이
node
값보다 작으면,
left
하위 트리로
node
를 설정하고 하위 트리로 탐색을 계속한다.
➍
target
값이
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.