leetcode700 Search in a Binary Search Tree

 1 """
 2 Given the root node of a binary search tree (BST) and a value. You need to find the node in the BST that the node's value equals the given value. Return the subtree rooted with that node. If such node doesn't exist, you should return NULL.
 3 For example,
 4 Given the tree:
 5         4
 6        / \
 7       2   7
 8      / \
 9     1   3
10 And the value to search: 2
11 You should return this subtree:
12       2
13      / \
14     1   3
15 """
16 """
17 两种方法
18 解法一:我用了一个p指针来存结果,进行二叉树的查找
19 """
20 class TreeNode:
21     def __init__(self, x):
22         self.val = x
23         self.left = None
24         self.right = None
25 
26 class Solution1:
27     def searchBST(self, root, val):
28         p = root
29         while p:
30             if p.val == val:
31                 return p
32             elif p.val > val:
33                 p = p.left
34             else:
35                 p = p.right
36         return None
37 """
38 解法二:递归,找到相等的返回
39 """
40 class Solution2:
41     def searchBST(self, root, val):
42         if not root:
43             return None
44         if root.val == val:
45             return root
46         elif root.val > val:
47             return self.searchBST(root.left, val)
48         else:
49             return self.searchBST(root.right, val)

 

posted @ 2020-03-03 23:02  yawenw  阅读(120)  评论(0编辑  收藏  举报