-
剑指offer计划7(搜索与回溯算法简单版)---java
剑指offer计划7(搜索与回溯算法简单版)---java
1.1、题目1
1.2、解法
这题看了解法,感叹真的6,代码量减了很多。
(A != null && B != null) && (recur(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B));
这一句实现了遍历整个树来寻找二叉树,并,同时加上了判断条件。
而recur函数中,则负责判断两个结点下的二叉树是否相同。
当结点移到null的时候,就证明已经结束,并且目前所经过的值都相同,则返回true
这题答案看了之后:“好像我也会。”
过几天一看:“咋做来着。”
1.3、代码
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
return (A != null && B != null) && (recur(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B));
}
boolean recur(TreeNode A, TreeNode B) {
if(B == null) return true;
if(A == null || A.val != B.val) return false;
return recur(A.left, B.left) && recur(A.right, B.right);
}
}
2.1、题目2
剑指 Offer 27. 二叉树的镜像
2.2、解法
其实这几行代码还能再简洁一点,因为left和right没变,可以把交换放在下面,
但是你懂就好啦,hhhhh,这题就是递归下去。
2.3、代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
JAVA
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root==null) return null;
TreeNode left = root.left;
root.left=root.right;
root.right=left;
root.left=mirrorTree(root.left);
root.right=mirrorTree(root.right);
return root;
}
}
3.1、题目3
剑指 Offer 28. 对称的二叉树
3.2、解法
这题自定义函数RECUR,通过判断null或者值不相同返回false,递归解决。
3.3、代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
JAVA
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return root==null?true:recur(root.left,root.right);
}
boolean recur (TreeNode a,TreeNode b){
if(a==null && b==null) return true;
if(a==null || b==null ||a.val!=b.val) return false;
return recur(a.left,b.right) && recur(a.right,b.left);
}
}
本文作者:叫我阿康就好
本文链接:https://www.cnblogs.com/urmkhaos/p/15236736.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
关注我
收藏该文
0
0
Posted @ 2021-09-07 09:19 叫我阿康就好 阅读(6) 评论(0) 编辑 收藏 举报
登录后才能查看或发表评论,立即 登录 或者 逛逛 博客园首页
【推荐】阿里云云大使特惠:新用户购ECS服务器1核2G最低价87元/年
【推荐】大型组态、工控、仿真、CAD\GIS 50万行VC++源码免费下载!
【推荐】百度智能云超值优惠:新用户首购云服务器1核1G低至69元/年
【推荐】和开发者在一起:华为开发者社区,入驻博客园科技品牌专区
【推广】园子与爱卡汽车爱宝险合作,随手就可以买一份的百万医疗保险
Copyright © 2021 叫我阿康就好
Powered by .NET 5.0 on Kubernetes
目录
1.1、题目1
剑指 Offer 26. 树的子结构
1.2、解法
1.3、代码
2.1、题目2
剑指 Offer 27. 二叉树的镜像
2.2、解法
2.3、代码
3.1、题目3
剑指 Offer 28. 对称的二叉树
3.2、解法
3.3、代码
Autumn Wonderland
07 Sept, 2021
Sept
07
随笔分类 (9)
技术分享(1)
其他后端分享(8)
阅读排行榜
1. 剑指offer计划5(查找算法中等版)---java(38)
2. Git连接github以及gitee等使用教程(34)
3. Java学习路线(27)
4. 剑指offer 计划1(栈与队列)---java(21)
5. 剑指offer计划2(链表)---java(11)
CNBLOG
MENU
博客园
首页
新随笔
联系
订阅
管理
FAVOURITE
收藏夹
Fork me on GitHub
叫我阿康就好
2.1、题目2
2.2、解法
其实这几行代码还能再简洁一点,因为left和right没变,可以把交换放在下面,
但是你懂就好啦,hhhhh,这题就是递归下去。
2.3、代码
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root==null) return null;
TreeNode left = root.left;
root.left=root.right;
root.right=left;
root.left=mirrorTree(root.left);
root.right=mirrorTree(root.right);
return root;
}
}
3.1、题目3
3.2、解法
这题自定义函数RECUR,通过判断null或者值不相同返回false,递归解决。
3.3、代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return root==null?true:recur(root.left,root.right);
}
boolean recur (TreeNode a,TreeNode b){
if(a==null && b==null) return true;
if(a==null || b==null ||a.val!=b.val) return false;
return recur(a.left,b.right) && recur(a.right,b.left);
}
}
本文作者:叫我阿康就好
本文链接:https://www.cnblogs.com/urmkhaos/p/15236736.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程