算法课第十七周作业 | Same Tree
来源:互联网 发布:爱淘宝领红包 编辑:程序博客网 时间:2024/06/02 01:28
写在前面:
这周老师给了期末考试模拟题,做模拟题去了忘记写作业(拖延症借口),刚好有一道模拟题跟leetcode上的一样,将解题思路总结如下。
题意解读:
给定两个树,判断这两个树是不是一模一样的树。
解题思路:
分析树的结构,树由TreeNode组成的,分别是一个顶点值val和2个TreeNode指针组成。
用分治的思想,先判断val是否一样,再判断两个左边部分和两个右边部分是否一样。
先判断TreeNode是否是NULL,如果不是,将左边部分和右边部分视为另外的树,采用迭代的方法,再次判断val和比较左右两部分。
如果两个左边的TreeNode是空,则判断右边的树是否一样即可,反之亦然。
当然,也有可能传进来的是空指针,这一步放在最前面。
记得我提交Sicily的时候没有加第一步空指针的判断,看来leetcode的测试数据集更完备一些。
代码:
class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p == NULL && q == NULL) return true; else if (p == NULL || q == NULL) return false; if(p->left == NULL && p->right == NULL && q->left == NULL && q->right == NULL) { if(p->val == q->val) return true; else return false; } else if (p->val == q->val && p->left == NULL && p->right != NULL && q->left == NULL && q->right != NULL) { return isSameTree(p->right, q->right); } else if (p->val == q->val && p->left != NULL && p->right == NULL && q->left != NULL && q->right == NULL) { return isSameTree(p->left, q->left); } else if (p->val == q->val && p->left != NULL && p->right != NULL && q->left != NULL && q->right != NULL) { return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right)); } else return false; }};
阅读全文
0 0
- 算法课第十七周作业 | Same Tree
- 【算法作业4】LeetCode 100. Same Tree
- 算法作业HW28:LeetCode 100. Same Tree
- 算法第十七周作业01
- 算法课第十八周Same Tree
- 算法作业_29(2017.6.12第十七周)
- 算法作业_30(2017.6.13第十七周)
- 算法作业_31(2017.6.14第十七周)
- 算法作业_32(2017.6.15第十七周)
- 算法:Same Tree
- 算法6 Same Tree
- 第十七周作业 1.0
- 第十七周作业1
- 第十七周作业
- 第十七周作业
- 算法设计与结构基础作业第十七周
- 第六周Same Tree
- 算法课第2周第1题——100. Same Tree
- ssm实战--监听器,ajax返回数据,分页实体类
- 安卓开发得到屏幕宽高
- 关于anaconda 找包,安装包的一些总结(关于Anaconda中PackageNotFoundError: '' Package missing in current win-64 channe)
- 回溯算法-八皇后
- spring01
- 算法课第十七周作业 | Same Tree
- Android Studio 无法启动模拟器
- Android 最火的快速开发框架XUtils
- 数据库传统的集合运算与专门的关系运算
- 并查集详解 (转)
- JavaEE复习笔记(9)——Struts:国际化
- 用递归实现角股定理 C语言
- Unity Shader入门精要学习笔记
- 为非前端准备的