LC-Two Sum IV - Input is a BST
2018-01-29 00:06
357 查看
方法1:
方法2:
0,第一个是自己写的方法,效率很差,第二种是主流的办法
1,第一种方法,就是利用先序遍历得到一个从小到大排列的一个列表,然后进行逐一相加比较,得到最后结果。因为题目给出的是BST,也就是二叉搜索树,因此先序搜索的结果就是一个从小到大排列的列表。
2,在方法2中,首先定义了一个元素为树节点的列表以及一个集合。利用所求元素与当前元素的差值是否在集合中来判断,集合中是否存在元素与当前元素的和等于目标元素,也就是题目的需求。
# 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中,首先定义了一个元素为树节点的列表以及一个集合。利用所求元素与当前元素的差值是否在集合中来判断,集合中是否存在元素与当前元素的和等于目标元素,也就是题目的需求。
相关文章推荐
- 算法分析与设计——LeetCode Problem.653 Two Sum IV - Input is a BST
- LeetCode Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST问题及解法
- Two Sum IV - Input is a BST
- leetcode 653 Two Sum IV - Input is a BST
- LeetCode.653 Two Sum IV - Input is a BST
- LeetCode Two Sum IV - Input is a BST
- LeetCode 653: Two Sum IV - Input is a BST
- leetcode Two Sum IV - Input is a BST 两个数的和
- LeetCode之Two Sum IV - Input is a BST(Kotlin)
- Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST
- Two Sum IV - Input is a BST
- leetcode[Two Sum IV - Input is a BST]//待整理多种解法
- LeetCode #653 Two Sum IV - Input is a BST
- [LeetCode] Two Sum IV - Input is a BST 两数之和之四 - 输入是二叉搜索树
- Two Sum IV - Input is a BST(leetcode)
- week19-leetcode #653-TwoSumIV-InputisaBST
- LC-Two Sum II - Input array is sorted
- [LeetCode] Two Sum II - Input array is sorted