小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
leetcode700-二叉搜索树的搜索
前文
本文为菜鸟的刷题记录,仅用作笔记使用,并非最佳解决方案。
题目信息
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
例如,
给定二叉搜索树:
4
/ \
2 7
/ \
1 3
和值: 2 你应该返回如下子树:
2
/ \
1 3
在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。
解题思路分析:
解法1:
首先要解决这道题,应该先关注到这是一个二叉搜索树。二叉搜索树主要是对于左右的节点,左子节点及其子节点均小于根节点,右子节点及所有子节点均大于根节点。因此想要从二叉搜索树中查找目标元素,可以直接对二叉搜索树进行遍历。目标值与每个节点进行比较,根据目标值与节点值的大小关系,进行左右的递归遍历,直到找到目标值。如果遍历到结束并未找到目标值,则认为该二叉搜索树中不存在此值。以此方式递归即可得到题目所需的目标结果。
public TreeNode searchBST(TreeNode root, int val) {
if(root == null){
return null;
}
if(root.val == val){
return root;
}else if(root.val > val){
return searchBST(root.left,val);
}else{
return searchBST(root.right,val);
}
}
复杂度分析
- 时间复杂度 o(n)
- 空间复杂度 o(1)
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。