查看: 715| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] 我现在对到底什么时候该往列表里放node,还是node.val有些迷惑。。。。。。。。。。。

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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这题我只要保证我的字典里的值是节点就完了,键我又不返回。可是为什么不行呢?

上一篇:271. Encode and Decode Strings 关于decode一处改动写法问题。。。。。。。。。。。
下一篇:OA和VO可以用特殊方法吗
全局:
因为你这题是查找重复的subtree 重复的subtree的node.Val就是一样的 直接放node就会是比较一整个subtree了 这取决于subtree有没有写comparator
回复

使用道具 举报

🔗
 楼主| ATPtennis 2021-10-11 17:29:52 | 只看该作者
全局:
PikachuchuZPYD 发表于 2021-10-10 18:42
因为你这题是查找重复的subtree 重复的subtree的node.Val就是一样的 直接放node就会是比较一整个subtree了  ...

still懵懂。等下次遇上直接放node的题再具体讨论
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表