Leetcode0100--Same Tree 相同树
【转载请注明】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 相同树的更多相关文章
- Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)
在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...
- 页面设计--Tree目录树
Tree目录树控件属性: 根据数据集合来配置相应的信息 加载模式有自动加载.自定加载 web中显示效果图:
- [转] Splay Tree(伸展树)
好久没写过了,比赛的时候就调了一个小时,差点悲剧,重新复习一下,觉得这个写的很不错.转自:here Splay Tree(伸展树) 二叉查找树(Binary Search Tree)能够支持多种动态集 ...
- CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划)
CJOJ 1976 二叉苹果树 / URAL 1018 Binary Apple Tree(树型动态规划) Description 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的 ...
- 【数据结构】B-Tree, B+Tree, B*树介绍 转
[数据结构]B-Tree, B+Tree, B*树介绍 [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tre ...
- poj 1741 Tree(树的点分治)
poj 1741 Tree(树的点分治) 给出一个n个结点的树和一个整数k,问有多少个距离不超过k的点对. 首先对于一个树中的点对,要么经过根结点,要么不经过.所以我们可以把经过根节点的符合点对统计出 ...
- 【POJ 2486】 Apple Tree(树型dp)
[POJ 2486] Apple Tree(树型dp) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8981 Acce ...
- MYSQL的B+Tree索引树高度如何计算
前一段被问到一个平时没有关注到有关于MYSQL索引相关的问题点,被问到一个表有3000万记录,假如有一列占8位字节的字段,根据这一列建索引的话索引树的高度是多少? 这一问当时就被问蒙了,平时这也只关注 ...
- easyUI之Tree(树)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- B-Tree, B+Tree, B*树介绍
[数据结构]B-Tree, B+Tree, B*树介绍 转 [数据结构]B-Tree, B+Tree, B*树介绍 [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是 ...
随机推荐
- C语言实现截屏
实现手机控制电脑执行部分功能需要获取桌面状态,在网上找的一段截屏代码 /** * GDI 截屏函数 * 参数 hwnd 要截屏的窗口句柄 * 参数 dirPath 截图存放目录 * 参数 filena ...
- elisp 编程 if 特殊表
elisp中的 if 特殊表与其他语言中的 if 语句逻辑上并无二致,关键在于如何使用. (if (> 4 3) (message "4 is greater than 3" ...
- STM32串口通信配置(USART1+USART2+USART3+UART4)
一.串口一的配置(初始化+中断配置+中断接收函数) 1 /*====================================================================== ...
- How do I drop a MongoDB database, from the command line?
mongo <dbname> --eval "db.dropDatabase()" > use mydb; > db.dropDatabase(); mon ...
- UVa - 12664 - Interesting Calculator
先上题目: 12664 Interesting CalculatorThere is an interesting calculator. It has 3 rows of button.• Row ...
- 【ACM】NYOJ_486_Old Calculator_20130725
Old Calculator时间限制:1000 ms | 内存限制:65535 KB 难度:1描述 szhhck have an old calculator bought 5 years ago ...
- WeX5 IDE 手机移动开发+JAVA +大数据
http://www.wex5.com/wex5/?qb360=wex501=3534 前端技术 HTML,CSS,JavaScript,EasyUI,Jquery,HTML5,CSS3,Jquery ...
- [转]十五天精通WCF——第四天 你一定要明白的通信单元Message
转眼你已经学了三天的wcf了,是不是很好奇wcf在传输层上面到底传递的是个什么鸟毛东西呢???应该有人知道是soap,那soap这叼毛长得是什么 样呢?这一篇我们来揭开答案... 一:soap到底长成 ...
- hdu1316(大数的斐波那契数)
题目信息:求两个大数之间的斐波那契数的个数(C++/JAVA) pid=1316">http://acm.hdu.edu.cn/showproblem.php? pid=1316 这里 ...
- Android中检測字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(一)
package com.android.filebrowser; import java.io.*; import java.net.*; public class FileEncodingD ...