572.另一棵树的子树

2024-01-26 11:08
文章标签 子树 一棵树 572

本文主要是介绍572.另一棵树的子树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

与T100很像

class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root == null) return false;if(dfs(root, subRoot)) return true;return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);}public boolean dfs(TreeNode node1, TreeNode node2){if(node1 == null && node2 == null) return true;if(node1 == null || node2 == null) return false;if(node1.val != node2.val) return false;return dfs(node1.left, node2.left) && dfs(node1.right, node2.right);}
}

这篇关于572.另一棵树的子树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646601

相关文章

【HDU】5574 Colorful Tree【子树染色,询问子树颜色数——线段树+bit+lca+set】

题目链接:【HDU】5574 Colorful Tree 题目大意:对一个子树染色,询问一个子树的颜色数。 题目分析: set set维护每种颜色所在的 dfs dfs序区间,修改均摊 nlogn nlogn。 #include <bits/stdc++.h>using namespace std ;typedef long long LL ;typedef pair < int , i

git如何设置嵌套仓库(设置子树或子模块),并解决直接将一个仓库拖拽到另一个仓库中导致的问题

git 将一个仓库拷贝到另一个仓库的文件夹下。默认git并不会处理,上传上去之后,只会创建一个文件夹,但是这个文件夹点不开。 在 git add . 的时候,会报出警告: 警告:正在添加嵌入式 git 仓库:client提示: You've added another git repository inside your current repository.提示: Clones of

算法---------寻找重复的子树(Java版本)

题目描述: 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1:1/ \2 3/ / \4 2 4/4下面是两个重复的子树:2/4和4因此,你需要以列表的形式返回上述重复子树的根结点。 解决方法: /*** Definition for a binary tree n

2166. 子树的大小及深度

代码 #include<bits/stdc++.h>using namespace std;vector<int> a[110];int d[110],s[110];int dfs(int x,int y){int i;s[x]=1;d[x]=d[y]+1;for(i=0;i<a[x].size();i++)if(a[x][i]!=y)s[x]=s[x]+dfs(a[x][i

数据结构-非线性结构-树形结构:有序树 ->二叉树 -> 平衡二叉树(任何节点的左右子树的高度差不大于1)-> 完全二叉树(除最底层外的其他层都被填满,且最底层左到右填入) -> 堆(优先队列)

完全二叉树:即除了最底层,其他层的节点都被元素填满,且最底层左到右填入。 完全二叉树属于平衡二叉树。 堆是一种完全二叉树,且满足以下条件: 最大堆:每个节点都比其子树所有节点大的完全二叉树;最小堆:每个节点都比其子树所有节点小的完全二叉树; 我们对堆中的结点按层进行编号,可以将堆逻辑结构映射到数组中 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i

HDU 1325(并查集判断一个图是否是一棵树)

题意:每组数据都以0 0结束,-1 -1结束程序。 每组数据中的每两个数字为一小组,前一个数字代表的结点指向后一个数字代表的结点。   #include <iostream>#include <cstring>using namespace std;int father[100010];int find_father(int x){while (father[x] != x)x

leetcode刷题(98)——652. 寻找重复的子树

给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 示例 1: 1/ \2 3/ / \4 2 4/4 下面是两个重复的子树: 2/4 和 4 因此,你需要以列表的形式返回上述重复子树的根结点。 /*** Definition for a binar

[CSU - 1811 (湖南省赛16)] Tree Intersection (dfs序维护子树+离线询问+树状数组)

CSU - 1811 (湖南省赛16) 给定一棵树,每个节点都有一个颜色 问割掉任意一条边,生成的两个子树中颜色集合的交集大小 这个是 dfs序处理子树 + 离线询问 + bit维护 的解法 首先问题转化为求解一个子树中有多少种颜色以及独有颜色的数量 用总的颜色数量减去独有颜色数量即为这棵子树的答案 先做一遍 dfs,再按 dfs序重新组建颜色序列 这样对子树的询问,就变成

寻一棵树的子树C++(Leetcode#572.另一个树的子树)题解

官方题解有很多高大上的方法,我这就将一个最容易想到、最直接的方法吧,比较详细(基本上没有压缩代码),有不懂的可以在评论区问我~~~若有不足欢迎大佬斧正(>人<;) 首先让我们来看看这个二叉树的题目(如下图)   看完题目,明确了一棵树的子树是到叶子节点结束的,这里抛出我开始做题的想法 如何找到子树的起始点?找到起始节点后,只能说明起始节点相同,万一树 s 里的子树结构里面有很多与树 t

检查子树00

题目链接 检查子树 题目描述 注意点 树的节点数目范围为[0, 20000] 解答思路 递归判断t1和t2的val是否相同,如果相同,则继续递归判断其左右子树的值是否都相同,如果都相同则返回true;如果不相同,则继续递归判断t1的左右子树和t2的val是否相同需要注意的是,如果t1和t2的val相同,在判断其左右子树的值是否相同时,如果不同,则直接返回false;而在判断t