题目描述
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
例如,
给定二叉搜索树:
4
/ \
2 7
/ \
1 3
和值: 2
你应该返回如下子树:
2
/ \
1 3
在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。
思路
首先要知道二叉搜索树是左孩子节点的值比父节点小而右孩子节点比父节点的值大的二叉树。这里我们采用递归的方法:
代码实现
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def searchBST(self, root, val):
"""
:type root: TreeNode
:type val: int
:rtype: TreeNode
"""
if not root:
return
if val == root.val:
return root
if val>root.val:
return self.searchBST(root.right,val)
if val<root.val:
return self.searchBST(root.left,val)
篇尾后记
今天是正月初七,这是2020年第一篇博客,2020年一开始太难过了,武汉新型肺炎;我最爱的球星科比布莱恩特不幸去世。唉,真的是太难了。
2020年是关键的一年了,希望这一年先苦后甜吧,希望大家都顺顺利利,早日实现自己的目标和愿望,加油!