解法一:深度优先遍历
深度优先遍历+二叉搜索树性质剪枝。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/class Solution {public TreeNode searchBST(TreeNode root, int val) {if (root.val == val) {return root;}TreeNode ans = null;if ((root.left != null) && (val < root.val)) {ans = searchBST(root.left, val);}if ((ans == null) && (root.right != null) && (val > root.val)) {ans = searchBST(root.right, val);}return ans;}}
解法二:广度优先搜索
广度优先搜索+二叉搜索树剪枝。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/class Solution {public TreeNode searchBST(TreeNode root, int val) {if (root == null) {return null;}Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);TreeNode ans = null;while (!queue.isEmpty()) {TreeNode temp = queue.poll();if (temp.val == val) {ans = temp;break;}if ((val < temp.val) && (temp.left != null)) {queue.offer(temp.left);}if ((val > temp.val) && (temp.right != null)) {queue.offer(temp.right);}}return ans;}}
