一:力扣题目链接
二:题意分析
其实对于这道题是非常简单的 因为利用二叉搜索树的特性 就不应去根据前中后序遍历去做这道题目,二叉搜索树的特性就是 (根节点的左子树的节点的值都比根节点小 根节点的右子树的节点的值都比根节点大。)利用这一特性 无论是递归还是迭代都是很快的可以做完这道题目。
三: 递归法
// 方法一:递归法
var searchBST = function(root, val) {
// 判断递归的终止条件
if(root === null || root.val === val)return root;
// 单层递归的逻辑
if(val < root.val){
return searchBST(root.left,val);
}
if(val > root.val){
return searchBST(root.right,val);
}
return null;
};
四:迭代法
// 迭代法:
var searchBST = function(root, val){
while(root !== null){
if(root.val > val){
root = root.left;
}else if(root.val < val){
root = root.right
}else{
return root;
}
}
return null
}
五:总结
这道题代码和思路之所以这么简洁和容易理解,主要是这道题目利用了二叉搜索树的特性触发,根本不用遍历全部二叉树的节点,直接根据他的特性来缩小范围,就很类似于二分查找。