标签:想法 建立 range 比较 two sum style http color bool
这道题属于容易,还是挺简单的,但是我用的方法比较复杂。
1、我的想法是把树转换成列表,然后再遍历这个列表,判断是否两个元素相加为0,这种方法时间复杂度较高
2、大神也是将树节点存在列表中,建立一个空集合set,遍历列表,如果该(k - 该节点值)在集合中则返回True,否则将该节点值加入集合中
我的:
1 class Solution(object): 2 def findTarget(self, root, k): 3 """ 4 :type root: TreeNode 5 :type k: int 6 :rtype: bool 7 """ 8 a = [root] 9 i = 0 10 while i <= len(a) - 1: 11 if i == len(a) - 1 and not a[i].left and not a[i].right: 12 break 13 else: 14 if a[i].left: a.append(a[i].left) 15 if a[i].right: a.append(a[i].right) 16 i += 1 17 18 for i in range(len(a)): 19 for j in range(i+1,len(a)): 20 if a[i].val + a[j].val == k: 21 return True 22 return False
大神的:
1 def findTarget(self, root, k): 2 if not root: return False 3 bfs, s = [root], set() 4 for i in bfs: 5 if k - i.val in s: return True 6 s.add(i.val) 7 if i.left: bfs.append(i.left) 8 if i.right: bfs.append(i.right) 9 return False
标签:想法 建立 range 比较 two sum style http color bool
原文地址:http://www.cnblogs.com/liuxinzhi/p/7483983.html