码迷,mamicode.com
首页 > 其他好文 > 详细

二叉搜索树中的搜索

时间:2020-08-17 16:46:20      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:type   roo   int   https   存在   data   编辑器   lis   nil   

题目描述:

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

例如,

给定二叉搜索树:

        4
       /       2   7
     /     1   3

和值: 2
你应该返回如下子树:

      2     
     / \   
    1   3

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 解题思路:

我们知道**二叉搜索树(BST)**的特性:

  • 若它的左子树不为空,则所有左子树上的值均小于其根节点的值
  • 若它的右子树不为空,则所有右子树上的值均大于其根节点得值
  • 它的左右子树也分别为二叉搜索树

那么思路就很简单了:

  • 如果val小于当前结点的值,转向其左子树继续搜索;
  • 如果val大于当前结点的值,转向其右子树继续搜索;
  • 如果已找到,则返回当前结点。
    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    func searchBST(root *TreeNode, val int) *TreeNode {
        if (root == nil) {
            return nil
        }
        if (root.Val > val) { 
            return searchBST(root.Left, val);    
        } else if (root.Val < val) {
            return searchBST(root.Right, val);
        } else {
            return root;
        }
    }
    

      地址:https://mp.weixin.qq.com/s/f9nlhmwyaEDQIx5NvJ63JA

 

二叉搜索树中的搜索

标签:type   roo   int   https   存在   data   编辑器   lis   nil   

原文地址:https://www.cnblogs.com/smallleiit/p/13500264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!