树的子结构——递归

77 阅读1分钟

image.png

代码:

  1. equal函数来dfs判断两个树是否一样
  2. isSubStructure函数来dfs方式向equal中传数据,
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isSubStructure(A *TreeNode, B *TreeNode) bool {
    if A == nil || B == nil {
        return false
    }
    if equal(A, B) {
        return true
    }
    return isSubStructure(A.Left, B) || isSubStructure(A.Right, B)
}

func equal(a *TreeNode, b *TreeNode) bool {
    if b == nil {
        return true
    }
    if a == nil ||  a.Val != b.Val {
        return false
    }
    return equal(a.Left, b.Left) && equal(a.Right, b.Right)
}