【转载请注明】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. vim使用配置-python

    安装vundle git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim 添加配置文件 vim ~/.v ...

  2. 64.root object的理解

    一.root object的理解     就是某个type对应的mapping json,包括properties,metadata(_id,_source,_type),settings(analy ...

  3. Linux - docker基础

    目录 Linux - docker基础 docker的概念 docker安装流程 docker基本命令学习 docker 的 hello docker 运行一个ubuntu容器 Docker与Cent ...

  4. RaspberryPi3安装CentOS7教程

    1.准备 Centos 7 AMR版镜像下载地址: http://mirror.centos.org/altarch/7/isos/armhfp/ 下载得到:CentOS-Userland-7-arm ...

  5. 清北学堂模拟赛d6t4 数组异或

    分析:直接O(n^3)做是只有50分的,可以加一点小小的优化,就是c[k]可以从c[k-1]得到,但是还是只有60分,从宏观意义上是不能继续优化了.对于这类涉及到位运算的性质的题目,将每个数转化成二进 ...

  6. bcd(Binary-Coded Decimal‎缩写)

    Binary-Coded Decimal‎,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数.是一种二进制的数字编码形式,用二进制编码的十进制代码.这种编码形式利用了四个位元来储存一个十进制的 ...

  7. 51nod——1432 独木桥

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1432 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 ...

  8. v$open_cursor的几个问题

    SQL order by SADDR desc ; SADDR SID USER ADDRESS HASH_VALUE SQL_ID SQL_TEXT -------- ---------- ---- ...

  9. HDU4882ZCC Loves Codefires(贪心)

    ZCC Loves Codefires Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  10. spring主要产品

    Spring Framework   * Spring Web Flow   * Spring Web Services   * Spring Security (Acegi Security)   ...