Go语言实现:【剑指offer】树的子结构

该题目来源于牛客网《剑指offer》专题。

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

Go语言实现:

type TreeNode struct {
   Val   int
   Left  *TreeNode
   Right *TreeNode
}//b是否和a的跟结点或左子树的跟结点或右子树的跟结点一致
func hasSubtree(a *TreeNode, b *TreeNode) bool {
   return isSubtree(a, b) || hasSubtree(a.Left, b) || hasSubtree(a.Right, b)
}//除了跟结点,其他结点是否也一致
func isSubtree(a *TreeNode, b *TreeNode) bool {
   if b == nil || a == nil {
      return false
   }
   if a.Val == b.Val {
      return isSubtree(a.Left, b.Left) && isSubtree(a.Right, b.Right)
   } else {
      return false
   }
}
posted @ 2019-12-08 20:30  南方有嘉木1993  阅读(120)  评论(0编辑  收藏  举报