您的位置:首页 > 其它

LC-Two Sum IV - Input is a BST

2018-01-29 00:06 357 查看
方法1:

# 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 findTarget(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: bool
"""
list = []

def dfs(root):
if root:
dfs(root.left)
list.append(root.val)
dfs(root.right)
return

dfs(root)
print list
for i in range(len(list)):
for j in range(i+1,len(list)):
if list[i] + list[j] == k:
return True

return False

Sol = Solution()

t1 = TreeNode(1)
t1.left = TreeNode(2)
t1.right = TreeNode(3)

print Sol.findTarget(t1,2)


方法2:

def findTarget(self, root, k):
if not root: return False
bfs, s = [root], set()
for i in bfs:
if k - i.val in s: return True
s.add(i.val)
if i.left: bfs.append(i.left)
if i.right: bfs.append(i.right)
return False


0,第一个是自己写的方法,效率很差,第二种是主流的办法

1,第一种方法,就是利用先序遍历得到一个从小到大排列的一个列表,然后进行逐一相加比较,得到最后结果。因为题目给出的是BST,也就是二叉搜索树,因此先序搜索的结果就是一个从小到大排列的列表。

2,在方法2中,首先定义了一个元素为树节点的列表以及一个集合。利用所求元素与当前元素的差值是否在集合中来判断,集合中是否存在元素与当前元素的和等于目标元素,也就是题目的需求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: