开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
前言
算法的重要性不言而喻!区分度高!
现在学习的门槛低了,只有能上网每个人都可以学编程!培训班6个月就可以培养出来能干活的人,你怎么从这些人中脱颖而出?没错!就是学算法,学一些底层和基础的东西。
说的功利点是为了竞争,卷死对手。真心话说就是能提高自己的基础能力,为技术可持续发展做好充分的准备!!!
提前入门学习书籍:CPrimerPlus、大话数据结构
刷题网站
我是按照代码随想录提供的刷题顺序进行刷题的,大家也可以去刷leetcode最热200道,都可以
刷题嘛,最重要的就是坚持了!!!
画图软件
OneNote
这个要经常用,遇见不懂的流程的话就拿它画一画!
笔记软件
Typoral
题目
解析
好的,今天我们来到了二叉搜索树!
它和普通的二叉树有什么不同呢?
- 若它的左子树不为空,则左子树上所有结点小于根节点的值
- 若它的右子树不为空,则右子树上所有结点大于根节点的值
哎,这二叉树还有大小,所以说儿茶搜索树的递归、迭代和普通的二叉树都是不一样的
那么这道题不就是找节点吗?
递归就完事了呗!
递归三部曲
- 确定递归的参数和返回值
参数为二叉搜索树和要查找的目标值,那返回值为找到的儿茶树。用题目中给到的即可
public TreeNode searchBST(TreeNode root, int val) {
- 确定递归终止的条件
终止条件就是当节点的值为null或者呢节点的值等于目标值那就返回root
if (root == null || root.val == val) {
return root;
}
- 确定单层递归的逻辑 单层递归怎么写呢?
很简单,我们可以利用二叉搜索树的特性
if(root.val > val) searchBST(root.right,val);
if(root.val < val) searchBST(root.left,val);
一图胜千言
完整代码
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
//确定递归终止条件
if(root == null || root.val == val) return root;
if(root.val < val){
return searchBST(root.right,val);
}else{
return searchBST(root.left,val);
}
}
}