判断两棵树是否相同

方法:对两棵树同时做相同的递归判断其值或者是结构是否相同。

以下代码用的是前序遍历。递归方法(毕竟递归好理解而且代码少得可怜)。

比较啰嗦的是指针为空的情况,只要把这些情况单独列出来就可了。

java

public boolean isSame(TreeNode s, TreeNode t){if(s==null&&t==null) return true;if(s==null||t==null) return false;return s.val==t.val&&isSame(s.left,t.left)&&isSame(s.right,t.right);}

判断一棵树是否是另一棵树的子树

这个算是对上一个问题的延伸。

方法:对A树的每个节点都做isSame函数,也就是比较此节点下的树和B树是否相同,相同则返回,不相同递归到它的左子树和右子树。仍然要注意空指针的情况。(这里假设了t和s都不为空)

java:

public boolean isSubtree(TreeNode s, TreeNode t) {if(s==null) return false;if(isSame(s,t)) return true;return isSubtree(s.left,t)||isSubtree(s.right,t);}public boolean isSame(TreeNode s, TreeNode t){if(s==null&&t==null) return true;if(s==null||t==null) return false;return s.val==t.val&&isSame(s.left,t.left)&&isSame(s.right,t.right);}

判断两个树是否相同判断一棵树是否是一棵树的子树相关推荐

  1. java判断两个int相等_Java 判断两个变量是否相等

    判断两个变量是否相等的方式有两种:利用运算符 == 利用equals方法 (1)比较基本Java基本数据类型 比较基本数据类型,只能用"==",不能用equals,这里比较的是两个 ...

  2. 用matlab判断两个球是否相交,判断两个矩阵相交

    判断两个矩阵相交 最近在回顾hihocoder上自己做过的题,看到清理海报这道题目,http://hihocoder.com/problemset/problem/1273?sid=707390当初比 ...

  3. vue 判断两对象是否一致_判断两个对象的值是否相等

    判断两个对象的值是否相等 源代码 function isEqual (a, b) { const classNameA = toString.call(a) const classNameB = to ...

  4. c++ 实现计算立方体面积体积 并 判断两个立方体是否相等 (类和对象学习)

    1.设计一个类 2.在私有权限内写立方体的属性 3.在公共权限内对立方体的属性进行可读可写操作 4.在类外定义一个bool类型的全局函数判断两个立方体是否相等 判断标准为:长宽高分别相等 code / ...

  5. 判断两个树是否相等和判断tree1是否包含tree2 python实现

    判断两个树是否相等 def equal(node_a, node_b):"""判断两个树是否相等:param node_a: :param node_b: :return ...

  6. 判断两棵树是否相等与使用二叉链表法建立二叉搜索树

    //判断两个二叉树是否相等 //提问如果两个二叉树的前序遍历相等,能否说明,这两个树相等? //答案是否定的,只有这两个树的 A前序=B前序,A中序=B中序才可以. BOOL isEqualTree( ...

  7. 判断两个树是否互相镜像

    // 3. 判断两个树是否互相镜像 public static boolean isMirrorRec(TreeNode r1, TreeNode r2){ // 如果两个树都是空树,则返回true ...

  8. C语言判断两字符串同构,c语言实现判断两颗树是否同构

    在本题中认为如果两个树左右子树交换可以相同,也被认为是同构树. 对应输入格式为:4(总结点数) A - 1 B 2 3 C - - D - - #include #define Tree int #d ...

  9. 树(5)-----判断两颗树一样或者一棵树是否是另外一颗的子树

    1.判断两颗树是否一样.(递归) def isSameTree(p,q):if not p and not q:return Trueelif not p and q or (not q and p) ...

  10. 【数据结构】判断两棵树是否相等的算法

    下面用先根遍历的思路描述算法的步骤: 若两棵二叉树都为空,则两棵二叉树相等,返回true; 若两棵二叉树都非空,则 若根结点的值相等,则继续判断它们的左子树是否相等: 若左子树相等,则再继续判断它们的 ...

最新文章

  1. HTML5存储学习笔记(一)
  2. 自然语言处理(NLP)之pyltp的介绍与使用(中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注)
  3. Ubuntu 16.04安装Java JDK
  4. 【php复习之】php创建数组的几种方式
  5. LeetCode 405. 数字转换为十六进制数
  6. 安徽中职计算机专业对口高考,安徽对口高考和普通高考有什么区别?
  7. 精通Python网络爬虫:核心技术、框架与项目实战.3.2 爬行策略
  8. PowerDesigner--创建概念数据模型;并生成逻辑数据模型/物理数据模型/数据库SQL脚本
  9. 转: 技巧/诀窍:在ASP.NET中重写URL
  10. 电子相册系统(三)使用技术
  11. Ubuntu install flash
  12. jBPM研究情况报告
  13. 深入String 与StringBuffer详解那个更省资源
  14. IntelliJ IDEA集成Git
  15. Matlab2016及以上版本设置VS编译器
  16. 抖音在线无水印解析PHP源码
  17. 使用函数提取姓别和出生日期:
  18. gunicorn 安装部署详解
  19. Appium: Could not proxy command to the remote server. Original error: socket hang up
  20. 分享一篇写的非常好的文章《如何掌握企业级技术和项目经验》,非常值得一看!

热门文章

  1. 行指针和列指针的理解
  2. excel表格行列显示十字定位_EXCEL中如何设置点击任意一个单元格出现一个十字架标明行和列...
  3. Intel Management Engine, Explained: The Tiny Computer Inside Your CPU
  4. 微信小程序-登陆注册滑块验证
  5. 移动互联网的技术趋势:从APP到Mobile Web
  6. 高斯过程是什么?从视觉上理解机器学习中的高斯过程——Gaussian Process
  7. 刘晓燕语法笔记——简单句
  8. 前端JS解决CST时间格式转成正常
  9. html ajax访问不了,jquery 请求ajax失败或者不执行的原因是什么?
  10. ESP8266-Arduino编程实例-认识ESP8266