当前位置: 首页 > 后端技术 > Python

力扣-0652.查找重复子树【Python】

时间:2023-03-26 14:24:58 Python

问题Leetcode给定一棵二叉树,返回所有重复子树。对于相同类型的重复子树,只需要返回其中任一子树的根节点即可。当两棵树具有相同的结构和相同的节点值时,它们被复制。例1:1/\23//\424/4下面是两棵重复的子树:2/4和4因此,需要将上述重复子树的根节点以列表的形式返回。思路后序遍历代码Python3#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclass解决方案:deffindDuplicateSubtrees(self,root:TreeNode)->List[TreeNode]:importcollectionsres=[]counter=collections.Counter()deftraverse(root):ifnotroot:return'#'#后序遍历left=traverse(root.left)right=traverse(root.right)chain=left+','+right+','+str(root.val)counter[chain]+=1#statistics出现Twice是重复子树,addresifcounter[chain]==2:res.append(root)returnchaintraverse(root)returnreslinkgithub