注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 ATPtennis 于 2021-10-10 17:32 编辑
举个例子,652. Find Duplicate Subtrees。代码如下
class Solution:
def findDuplicateSubtrees(self, root: Optional[TreeNode]) -> List[Optional[TreeNode]]:
def dfs(root):
if not root:
return None
left = dfs(root.left)
right = dfs(root.right)
tup = (root.val, left, right)
dic[tup].append(root)
return tup
dic = defaultdict(list)
dfs(root)
result = []
for roots in dic.values():
if roots[1:]:
result.append(roots[0])
return result
这时候你看他这行放的是root.val。tup = (root.val, left, right)。
还有我见过建立visited = set(),然后也放root.val的。我还见过建立一个图graph,然后往里写graph[root] = parent。这种的。我现在有点迷糊了,到底什么时候放root,到底什么时候放root.val。
这题建立元组为什么不能放root,而要放root.val?放root没什么问题啊,你看我上面举的例子,人家graph[root]就直接root,说明是可以直接放节点的。
关键652这题我只要保证我的字典里的值是节点就完了,键我又不返回。可是为什么不行呢?
|