Two Sum IV - Input is a BST

Posted 唐僧洗发爱飘柔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Two Sum IV - Input is a BST相关的知识,希望对你有一定的参考价值。

    这道题属于容易,还是挺简单的,但是我用的方法比较复杂。

  题目:

    

  思路:

    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

 

 

以上是关于Two Sum IV - Input is a BST的主要内容,如果未能解决你的问题,请参考以下文章

653. Two Sum IV - Input is a BST

653. Two Sum IV - Input is a BST

653. Two Sum IV - Input is a BST

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]