解题代码
/** * 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; * } * } */class Solution { public TreeNode searchBST(TreeNode root, int val) { if(root == null) return null; if(root.val == val) return root; TreeNode left = searchBST(root.left,val); if(left != null ) return left; TreeNode right = searchBST(root.right,val); return right; }}
/** * 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) { //迭代 /** * 递归与迭代的区别 * 递归:重复调用函数自身实现循环称为递归; * 迭代:利用变量的原值推出新值称为迭代,或者说迭代是函数内某段代码实现循环; */ while (root != null) { if(root.val == val) return root; else if(root.val < val) root = root.right; else if(root.val > val) root = root.left; } return null; }}