LeetCode面试题26.树的子结构[Medium][Python][DFS]题目输入两棵二叉树A和B,判断B是否是A的子结构。(约定空树不是任何树的子结构)B是A的子结构,即A与B具有相同的结构和节点值。例如:给定树A:3/\45/\12给定树B:4/1返回true,因为B与A的子树具有相同的结构和节点值。例1:输入:A=[1,2,3],B=[3,1]输出:false示例2:输入:A=[3,4,5,1,2],B=[4,1]输出:true限制:0<=节点数<=10000两层思维DFS第一层图层:找到起点。先判断当前节点,如果不是则判断左子树和右子树。第二阶段:从找到的起点判断剩余的点。Python3code#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:defisSubStructure(self,A:TreeNode,B:TreeNode)->bool:ifnotAornotB:returnFalsereturnself.dfs(A,B)orself.isSubStructure(A.left,B)orself.isSubStructure(A.right,B)defdfs(self,A:TreeNode,B:TreeNode):ifnotB:returnTrueifnotA:returnFalseifnotA.val==B.val:returnFalse#A树的根等于树的根Btreereturnself.dfs(A.left,B.left)andself.dfs(A.right,B.right)#注意这里是和代码地址GitHub链接类似题目LeetCode1367.Listinthebinarytree
