type TreeNode struct{
Val int
Left *TreeNode
Right *TreeNode
}funcisSubStructure(A *TreeNode, B *TreeNode)bool{if A ==nil|| B ==nil{returnfalse}// A的根节点或左右节点任意一个节点与B相等都返回truereturnisSub(A, B)||isSubStructure(A.Left, B)||isSubStructure(A.Right, B)}funcisSub(a, b *TreeNode)bool{if b ==nil{// b对比完成returntrue}if a ==nil{// 对比未完成,a已经未空returnfalse}if a.Val != b.Val {// 两个节点的值不等;对比结束returnfalse}// 分别对比左右节点returnisSub(a.Left, b.Left)&&isSub(a.Right, b.Right)}
题目链接思路比较A,B两个节点,如果根不同就拿A.Left和A.Right与B对比如果A,B两个根节点相同,就拿A.Left和B.Left;A.Right和B.Rught对比;直至将B对比完毕返回true如果将A对比完毕都没有与B相同的结构返回falsejava public boolean isSubStructure(TreeNode A, TreeNode B) { if (A == null || B== null){ //约定空树不是任