【转载请注明】http://www.cnblogs.com/igoslly/p/8707664.html

来看一下题目:

Given two binary trees, write a function to check if they are the same or not.

Two binary trees are considered the same if they are structurally identical and the nodes have the same value.

Example 1:

Input:     1         1

/ \       / \

2   3     2   3

[1,2,3],   [1,2,3]

Output: true

Example 2:

Input:     1         1

/           \

2             2

[1,2],     [1,null,2]

Output: false

题目意思:

判断两个二叉树是否相等

注意点:

1、区分左结点和右结点

2、虽然题目给的数组形式,但代码中还是以ListNode* 结点给出

思路:

1、分别遍历树1和树2,结束前若有结点不同,直接返回false


实现方法1:

使用前序遍历方法进行遍历,dfs()子函数递归操作

void dfs(bool * flag,TreeNode *node1,TreeNode * node2){
if(!(*flag)){return;} // 判断结果false,无需后续操作,直接返回
if(node1==NULL&&node2!=NULL){*flag=false;return;}
if(node1!=NULL&&node2==NULL){*flag=false;return;} // 若一方为NULL,一方还有值,直接判定false
if(node1==NULL&&node2==NULL){return;} // 两方均到根结点、遍历结束
if(node1->val!=node2->val){*flag=false;return;} // 当前根结点
// 遍历左结点和右结点
dfs(flag,node1->left,node2->left);
dfs(flag,node1->right,node2->right);
}
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
bool flag=true;
dfs(&flag,p,q);
return flag; }
};

实现方法2:

简化写法,直接递归原函数isSameTree,首先:① 取消子函数dfs  ②  无需分别判断 node1 & node2 的NULL情况

class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if (p&&q) // p & q 均有值
return(p->val==q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right));
// return 先判断当前值是否相等
// 遍历左子树和右子树 else if (p||q) // p & q 不都有值
return false;
else // p & q 都无值
return true;
}
};

扩展:

在某个大神的代码里看到如下几行,是来做为了优化C++流中不断刷新缓冲区,进行:

static int x = [](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return ;
}();

具体解释可以看链接:https://www.cnblogs.com/PrayG/p/5749832.html

Leetcode0100--Same Tree 相同树的更多相关文章

  1. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  2. 页面设计--Tree目录树

    Tree目录树控件属性: 根据数据集合来配置相应的信息 加载模式有自动加载.自定加载 web中显示效果图:

  3. [转] Splay Tree(伸展树)

    好久没写过了,比赛的时候就调了一个小时,差点悲剧,重新复习一下,觉得这个写的很不错.转自:here Splay Tree(伸展树) 二叉查找树(Binary Search Tree)能够支持多种动态集 ...

  4. CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划)

    CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划) Description 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的 ...

  5. 【数据结构】B-Tree, B+Tree, B*树介绍 转

    [数据结构]B-Tree, B+Tree, B*树介绍 [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tre ...

  6. poj 1741 Tree(树的点分治)

    poj 1741 Tree(树的点分治) 给出一个n个结点的树和一个整数k,问有多少个距离不超过k的点对. 首先对于一个树中的点对,要么经过根结点,要么不经过.所以我们可以把经过根节点的符合点对统计出 ...

  7. 【POJ 2486】 Apple Tree(树型dp)

    [POJ 2486] Apple Tree(树型dp) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8981   Acce ...

  8. MYSQL的B+Tree索引树高度如何计算

    前一段被问到一个平时没有关注到有关于MYSQL索引相关的问题点,被问到一个表有3000万记录,假如有一列占8位字节的字段,根据这一列建索引的话索引树的高度是多少? 这一问当时就被问蒙了,平时这也只关注 ...

  9. easyUI之Tree(树)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  10. B-Tree, B+Tree, B*树介绍

    [数据结构]B-Tree, B+Tree, B*树介绍 转   [数据结构]B-Tree, B+Tree, B*树介绍 [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是 ...

随机推荐

  1. Windows压缩包安装MySQL

    一.下载zip版本 下载网址(如果浏览器下载很慢可以使用迅雷) http://dev.mysql.com/downloads/mysql/ 二.解压将得到的文件放置到任意目录 如果解压后的文件里没有d ...

  2. GeoTrust 企业(OV)型 通配符(Wildcard) SSL证书

      GeoTrust 企业(OV)型 通配符(Wildcard)SSL证书(GeoTrust True BusinessID Wildcard SSL Certificates),支持通配符(Wild ...

  3. controller 接口写法

    import org.apache.commons.io.IOUtils; import javax.servlet.ServletInputStream; @RequestMapping(" ...

  4. Ubuntu 安装有道词典

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51302546 官网首页:有道词典 其中 ...

  5. 用c++编程:用两个栈实现队列

    栈s1和栈s2,栈s1专门为入队,栈s2专门为出队. 入队: 当s1和s2都为空时,直接入队s1. 当s1为空,s2不为空时,把s2的元素都倒回s1,然后再入队s1 出队: 当s2不为空时,直接出队s ...

  6. [poj3974]Palindrome_Manacher

    Palindrome poj-3974 题目大意:求字符串的最长回文子串. 注释:$1\le strlen(s) \le 10^6$. 想法:介绍一种字符串算法——Manacher.求以每一个字符和字 ...

  7. mysql子查询案例

    源SQL如下: 创建数据表 CREATE TABLE IF NOT EXISTS tdb_goods(     goods_id SMALLINT UNSIGNED PRIMARY KEY AUTO_ ...

  8. applicationcontext理解使用

    Spring ApplicationContext 容器 Application Context 是 spring 中较高级的容器.和 BeanFactory 类似,它可以加载配置文件中定义的 bea ...

  9. Spring cloud config配置文件加密解密

    Spring cloud config配置文件加密解密 学习了:http://blog.csdn.net/u010475041/article/details/78110349 学习了:<Spr ...

  10. LinkedList,ArrayList末尾插入谁效率高?

    废话不多说,原因不解释.上測试代码: package com.letv.cloud.cdn.jtest; import java.io.IOException; import java.util.Ar ...