该题目来源于牛客网《剑指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
}
}

最新文章

  1. 基于Python的函数回归算法验证
  2. cdh环境下,spark streaming与flume的集成问题总结
  3. python---dict字典
  4. Android 5.x特性概览三
  5. 生成PHP数组文件
  6. window编程之win程序框架
  7. 萌新关于C#委托一点见解
  8. 【一天一道LeetCode】#25. Reverse Nodes in k-Group
  9. echarts 配置
  10. 菜鸟安卓学习路——更强大的滚动控件--RecycleView
  11. SonarQube 集成 GitLabCI
  12. iOS10原生的语音转文字功能
  13. 【译】第22节---Fluent API - EntityTypeConfiguration类
  14. WCF中的Dispose(转)
  15. PHP查询登录中的sql注入
  16. SQL Server 2008重新保存表时出错
  17. How do you add? UVA - 10943(组合数的隔板法!!)
  18. clob字段超过4000转String类型
  19. Python自动化之logging模块
  20. nl命令(转)

热门文章

  1. linux常用命令,最基础
  2. 在GeneXus开发过程中如何进行自动化测试?
  3. 1z0-062 题库解析3
  4. 趣谈编程史第2期-这个世界缺少对C语言的敬畏,你不了解的C语言科普
  5. 在 Vue 中使用 Typescript
  6. Netty之缓冲区ByteBuf解读(一)
  7. async-await 线程分析
  8. Jenkins自动执行python脚本输出测试报告
  9. @ControllerAdvice自定义异常统一处理
  10. ninject 的 实现 的 理解