653.两数之和IV-输入BST
https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/
层序遍历(BFS)
维护一个set,每访问一个值就写入,当前节点值为val,当k-val存在于set时,表示存在两个节点和为k
BST在查找某个数时比较搞笑,复杂度logN,但找两数之和并不高效,复杂度On
用前序dfs遍历也可,但是会访问到叶节点,而层序bfs不一定要到叶就能找到,除非极端情况
class Solution:
def findTarget(self, root: TreeNode, k: int) -> bool:
s = set() #记录访问过的节点值
q = [root]
while q:
for _ in range(len(q)):
node = q.pop(0)
val = node.val
if k - val in s:
return True
s.add(val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
return False
最后更新于