You are given the root of a binary search tree (BST) and an integer val.
Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If such a node does not exist, return null.
int val
이라고 할 때, val
가 노드보다 작으면 왼쪽, 크면 오른쪽으로 이동한다.중요한 것은 탐색 시
재귀적
으로 시행할 수 있다는 것!
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root == null) { //1. null
return null;
}
if (root.val == val) { //2. equal
return root;
}
if (root.val < val) { //3. Greater
return searchBST(root.right, val);
}
return searchBST(root.left, val); //4.Less
}
}
재귀적으로 시행한다!!!
참고: 이진탐색트리 정의
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/