递归写法判断两棵树是否相同:

bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出
void judge(node* root1, node* root2)
{if(root1 == root2) return; // 这个相等其实是用来判断都为空的,那么不用改变flagif((root1 == NULL && root2 != NULL) || (root2 == NULL && root1 != NULL)){// 一棵为空一棵不为空,肯定是不同的flag = false;return;}if(root1->data != root2->data){flag = false;return;}judge(root1->left,root2->left);judge(root1->right, root2->right);
}

如果将judge函数设为bool,返回true或者false,这样的递归不是很好懂,因为当内层返回true,外层返回false,即使内层break,也只不过往外跳出一层,不能直接回到最最外面。

这种在外面插个flag的递归写法就比较好懂好写好调试了。

默认两棵树是相等的,那么,judge函数只干一件事情:碰到两棵树任何不一样的地方就把flag改为false,这样可以保证判断的唯一性。

递归判断两棵树是否相同相关推荐

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

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

  2. LeetCode——Same Tree(判断两棵树是否相同)

    问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...

  3. 百度面试题:判断两棵树是否相等

    请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度. 数据结构为: typedef struct_TreeNode{ char c; TreeNode *leftchild; T ...

  4. 代码实现判断两棵树是否相等

    //两棵树是否相等 bool compare(const Node *root1,const Node *root2){if (root1==NULL&&root2==NULL){re ...

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

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

  6. python【数据结构与算法】判断两棵树是否相等

    # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # sel ...

  7. 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)

    一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...

  8. 判断两个树是否相同判断一棵树是否是一棵树的子树

    判断两棵树是否相同 方法:对两棵树同时做相同的递归判断其值或者是结构是否相同. 以下代码用的是前序遍历.递归方法(毕竟递归好理解而且代码少得可怜). 比较啰嗦的是指针为空的情况,只要把这些情况单独列出 ...

  9. 判断一棵树是否是另一棵树的子树(Java实现)

    前面一篇文章介绍了如何判断两棵树相等,思路就是遍历每个节点,然后判断是否均相等,需要用递归来实现.如果需要判断一棵树是另一棵树的子树,该怎么办呢?我们需要借助前面的思路,需要先判断两棵树相等,这里就是 ...

最新文章

  1. 十分钟轻松让你认识Entity Framework 7
  2. java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法
  3. 虚拟机+可信+云计算
  4. Android Socket编程
  5. mysql 注入用例_mysql-常用注入渗透手法
  6. java rpg项目代码_java rpg游戏代码(移动保存读取)
  7. android 创建文件夹_Android 动画小记
  8. 【新书推荐】机器学习算法竞赛实战,Kaggle Grandmaster倾力打造,涵盖Kaggle、天池等赛题...
  9. 一位老程序员的心得分享,WEB前端菜鸟,感觉很迷茫,该怎么做?
  10. 编写可维护的 JavaScript
  11. 去掉内容中的所有全部html标签。
  12. u盘魔术师装linux,小白也能学会的U盘魔术师重装系统教程
  13. Disunity_V0.5.0 提取Unity生成的APK资源的后续探索
  14. matlab一维图像程序,求大神指教啊!基于图像处理的一维条码识别(MATLAB程序)...
  15. 如何批量预测lncRNA靶向的miRNA?
  16. 机器学习一百天 数据预处理
  17. 西山小菜鸟之Scrapy学习笔记---爬取企查查网公司的裁判文书信息
  18. (二)Easyexcel 的使用(读取数据到map集合中)
  19. Python six库介绍和用法
  20. 3个妙招,克服面试焦虑,紧张

热门文章

  1. 查看本地计算机的私有/公有 IP 地址
  2. HITMAN,Life is Strange和适用于Linux的新游戏
  3. 要不起对三队 - alpha冲刺(第二天)
  4. IIS部署网站问题 您正在搜索的页面可能已经删除、更名或暂时不可用。
  5. Matlab 2012a 函数句柄的理解和用法
  6. 安卓炫酷的抽屉菜单——JPSpringMenu
  7. 2022年全球市场2代纤维素乙醇总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. NAACL 2019 字词表示学习分析
  9. MC9S12XEP100的IIC模块(IICV3)
  10. PostgreSql pg_dump用法