이진 탐색 트리의 구조를 생각하며 케이스 별로 풀어나가면 비교적 쉽게 생각해낼 수 있다.
parent Node의 왼쪽 branch에는 자신보다 작은 수가 연결되어야하고, 오른쪽 branch에는 자신보다 큰 수가 연결되어야 한다.
public Node Search(int data) {
// case 1. Node가 하나도 없을 때
if(this.root == null) {
return null;
}
// case 2. Node가 하나 이상 있을 때
else {
Node findNode = this.root;
while(findNode != null) {
// case 2-1. 찾고 있는 Node이면 return
if(findNode.value == data) {
return findNode;
}
// case 2-2. 현재 Node의 value 보다 작을 때 (왼쪽 Child Node)
else if(findNode.value > data) {
findNode = findNode.left;
}
// case 2-3. 현재 Node의 value 보다 크거나 같을 때 (오른쪽 Child Node)
else {
findNode = findNode.right;
}
}
return null;
}
}