树的子结构(判断B是否为A的子树)

https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/

 

 

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
 //思路:
 //1、递归A树,找到比较B树的入口节点
 //2、从入口节点开始,同时递归和比较AB树的值
 //3、如果A树先递归完,或者比较不相等,则返回false

func isSubStructure(A *TreeNode, B *TreeNode) bool {
    if A==nil||B==nil{
        return false
    }
    if A.Val==B.Val&&check(A.Left,B.Left)&&check(A.Right,B.Right){
        return true
    }
    return isSubStructure(A.Left,B)||isSubStructure(A.Right,B)
}
func check(A,B *TreeNode) bool{
    if B==nil{
        return true
    }
    if A==nil{
        return false
    }
    if A.Val==B.Val{
        return check(A.Left,B.Left)&&check(A.Right,B.Right)
    }else{
        return false
    }
}

 二叉树的建立:https://www.cnblogs.com/-citywall123/p/16434923.html

posted @ 2022-06-28 10:54  知道了呀~  阅读(81)  评论(0编辑  收藏  举报