ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

700 二叉搜索树中的搜索(递归)

2020-12-02 21:33:39  阅读:162  来源: 互联网

标签:递归 val root self 700 二叉 搜索 树中 节点


1. 问题描述:

给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

给定二叉搜索树:

        4
       /   \
      2   7
     /  \
    1  3

和值: 2

你应该返回如下子树:

      2     
     /  \   
    1   3

在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree

2. 思路分析:

由于是在二叉搜索树中寻找某个节点的值所以我们使用递归来寻找,并且利用二叉搜索树的特点(根节点的左子树的值都比根节点要小,根节点的右子树的值都比根节点要大)进行递归,当根节点的值大于目标值的时候那么应该在根节点的左子树中寻找,否则在右子树中寻找,当找到目标节点之后那么就可以返回当前的节点,这样递归会层层返回一直到根节点递归调用就结束了,最终返回的节点就是我们需要在二叉树中找的目标节点

3. 代码如下:

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution:
    def searchBST(self, root: TreeNode, val: int) -> TreeNode:
        if not root: return root
        # 找到了目标节点
        if root.val == val: return root
        if root.val < val:
            return self.searchBST(root.right, val)
        else:
            return self.searchBST(root.left, val)

 

标签:递归,val,root,self,700,二叉,搜索,树中,节点
来源: https://blog.csdn.net/qq_39445165/article/details/110500001

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有