牛客NC98 判断t1树中是否有与t2树完全相同的子树【simple 深度优先dfs C++/Java/Go/PHP】

ops/2024/10/18 20:19:40/

题目

在这里插入图片描述

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/4eaccec5ee8f4fe8a4309463b807a542

思路

深度优先搜索暴力匹配
思路和算法这是一种最朴素的方法——深度优先搜索枚举
s 中的每一个节点,判断这个点的子树是否和
t 相等。如何判断一个节点的子树是否和
t 相等呢,我们又需要做一次深度优先搜索来检查,即让两个指针一开始先指向该节点和
t 的根,然后「同步移动」两根指针来「同步遍历」这两棵树,判断对应位置是否相等。

参考答案C++

/*** struct TreeNode {*  int val;*  struct TreeNode *left;*  struct TreeNode *right;*  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root1 TreeNode类* @param root2 TreeNode类* @return bool布尔型*/bool isContains(TreeNode* root1, TreeNode* root2) {/*深度优先搜索暴力匹配思路和算法这是一种最朴素的方法——深度优先搜索枚举s 中的每一个节点,判断这个点的子树是否和t 相等。如何判断一个节点的子树是否和t 相等呢,我们又需要做一次深度优先搜索来检查,即让两个指针一开始先指向该节点和t 的根,然后「同步移动」两根指针来「同步遍历」这两棵树,判断对应位置是否相等。*/return dfs(root1, root2);}bool  dfs(TreeNode* s, TreeNode* t) {if (s == nullptr) return false;return check(s, t) || dfs(s->left, t) || dfs(s->right, t);}bool check(TreeNode* s, TreeNode* t) {if (s == nullptr && t == nullptr) return true;if (s == nullptr || t == nullptr || s->val != t->val)return false;return check(s->left, t->left) && check(s->right, t->right);}
};

参考答案Java

import java.util.*;/** public class TreeNode {*   int val = 0;*   TreeNode left = null;*   TreeNode right = null;*   public TreeNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root1 TreeNode类* @param root2 TreeNode类* @return bool布尔型*/public boolean isContains (TreeNode root1, TreeNode root2) {/*深度优先搜索暴力匹配思路和算法这是一种最朴素的方法——深度优先搜索枚举s 中的每一个节点,判断这个点的子树是否和t 相等。如何判断一个节点的子树是否和t 相等呢,我们又需要做一次深度优先搜索来检查,即让两个指针一开始先指向该节点和t 的根,然后「同步移动」两根指针来「同步遍历」这两棵树,判断对应位置是否相等。*/return dfs(root1, root2);}public boolean dfs(TreeNode s, TreeNode t) {if (s == null) return false;return check(s, t) || dfs(s.left, t) || dfs(s.right, t);}public boolean check(TreeNode s, TreeNode t) {if (s == null && t == null) return true;if (s == null || t == null || s.val != t.val)return false;return check(s.left, t.left) && check(s.right, t.right);}
}

参考答案Go

package mainimport . "nc_tools"/** type TreeNode struct {*   Val int*   Left *TreeNode*   Right *TreeNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root1 TreeNode类* @param root2 TreeNode类* @return bool布尔型*/
func isContains(root1 *TreeNode, root2 *TreeNode) bool {/*深度优先搜索暴力匹配思路和算法这是一种最朴素的方法——深度优先搜索枚举s 中的每一个节点,判断这个点的子树是否和t 相等。如何判断一个节点的子树是否和t 相等呢,我们又需要做一次深度优先搜索来检查,即让两个指针一开始先指向该节点和t 的根,然后「同步移动」两根指针来「同步遍历」这两棵树,判断对应位置是否相等。*/return dfs(root1, root2)
}func dfs(s, t *TreeNode) bool {if s == nil {return false}return check(s, t) || dfs(s.Left, t) || dfs(s.Right, t)
}func check(s, t *TreeNode) bool {if s == nil && t == nil {return true}if s == nil || t == nil || s.Val != t.Val {return false}return check(s.Left, t.Left) && check(s.Right, t.Right)
}

参考答案PHP

<?php/*class TreeNode{var $val;var $left = NULL;var $right = NULL;function __construct($val){$this->val = $val;}
}*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param root1 TreeNode类 * @param root2 TreeNode类 * @return bool布尔型*/
function isContains( $root1 ,  $root2 )
{/*深度优先搜索暴力匹配思路和算法这是一种最朴素的方法——深度优先搜索枚举s 中的每一个节点,判断这个点的子树是否和t 相等。如何判断一个节点的子树是否和t 相等呢,我们又需要做一次深度优先搜索来检查,即让两个指针一开始先指向该节点和t 的根,然后「同步移动」两根指针来「同步遍历」这两棵树,判断对应位置是否相等。*/return dfs($root1,$root2);
}function dfs($s,$t){if($s ==null) return false;return check($s,$t) || dfs($s->left,$t) || dfs($s->right,$t);
}function check($s,$t){if($s ==null && $t==null) return true;if($s ==null || $t==null || $s->val !=$t->val)return false;return check($s->left,$t->left) && check($s->right,$t->right);
}

http://www.ppmy.cn/ops/26510.html

相关文章

利用大型语言模型提升个性化推荐的异构知识融合方法

在推荐系统中&#xff0c;分析和挖掘用户行为是至关重要的&#xff0c;尤其是在美团外卖这样的平台上&#xff0c;用户行为表现出多样性&#xff0c;包括不同的行为主体&#xff08;如商家和产品&#xff09;、内容&#xff08;如曝光、点击和订单&#xff09;和场景&#xff0…

24.什么是跨域?解决方案有哪些?

为什么会出现跨域问题 存在浏览器同源策略&#xff0c;所以才会有跨域问题。那么浏览器是出于何种原因会有跨域的限制呢。其实不难想到&#xff0c;跨域限制主要的目的就是为了用户的上网安全。 同源策略导致的跨域是浏览器单方面拒绝响应数据&#xff0c;服务器端是处理完毕…

Docker基本命令

以下是一些常用的Docker基本命令&#xff1a; docker run&#xff1a;启动一个容器 示例&#xff1a;docker run hello-world docker ps&#xff1a;列出所有正在运行的容器 示例&#xff1a;docker ps docker images&#xff1a;列出所有本地镜像 示例&#xff1a;docker im…

[论文阅读] 测试时间自适应TTA

最初接触 CVPR2024 TEA: Test-time Energy Adaptation [B站]&#xff08;1:35:00-1:53:00&#xff09;https://www.bilibili.com/video/BV1wx4y1v7Jb/?spm_id_from333.788&vd_source145b0308ef7fee4449f12e1adb7b9de2 实现&#xff1a; 读取预训练好的模型参数设计需要更…

Github创建远程仓库(项目)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

鸿蒙原生应用元服务开发-Web加载本地页面

将本地页面文件放在应用的rawfile目录下&#xff0c;开发者可以在Web组件创建的时候指定默认加载的本地页面 &#xff0c;并且加载完成后可通过调用loadUrl()接口变更当前Web组件的页面。 在下面的示例中展示加载本地页面文件的方法&#xff1a; 将资源文件放置在应用的resou…

前端HTML5学习2(新增多媒体标签,H5的兼容性处理)

前端HTML5学习2新增多媒体标签&#xff0c;H5的兼容性处理&#xff09; 分清标签和属性新增多媒体标签新增视频标签新增音频标签新增全局属性 H5的兼容性处理 分清标签和属性 标签&#xff08;HTML元素&#xff09;和属性&#xff0c;标签定义了内容的类型或结构&#xff0c;而…

Pytorch 的实际应用 学习笔记

一. 模型的下载 weights为false时则为没有提前经过训练的模型&#xff0c;为true时则经过了提前训练 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) 打印 二. 模型的修改 &#xff08;1&#xff09;添加操作 …