- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
LeetCode 617 : 合并二叉树
描述:
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null){
return root2;//root1为空,返回root2
}
if(root2 == null){
return root1;//root2为空,返回root1
}
//创建一个新的节点
TreeNode merge = new TreeNode(root1.val + root2.val);
//该节点的左子树
merge.left = mergeTrees(root1.left,root2.left);
//该节点的右子树
merge.right = mergeTrees(root1.right,root2.right);
return merge;//返回该节点
}
}
LeetCode 637 : 二叉树的层平均值
描述:
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
List<Double> list = new ArrayList<>();
if(root == null) return list;//为空直接返回
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()){
long sum = 0;//sum用来表示每层的总和
int size = queue.size();
int count = size;//count用来表示每层元素的个数
while(size != 0){
//size为空的时候表示这一层已经记录完
TreeNode top =queue.poll();
sum += top.val;//每次出队的时候,将数据加到sum中
if(top.left != null){
queue.offer(top.left);
}
if(top.right != null){
queue.offer(top.right);
}
size--;
}
//走出循环表示每层结束,所以将求得的平均值放入list中
list.add(sum / (count*1.0));
}
return list;
}
}
LeetCode 671 : 二叉树中第二小的节点
描述:
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。
更正式地说,root.val = min(root.left.val, root.right.val)
总成立。
给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
class Solution {
public int findSecondMinimumValue(TreeNode root) {
return getMinValue(root,root.val);
}
public int getMinValue(TreeNode root,int val){
if(root==null) return -1; // 没有找到比根节点大的返回-1;
if(root.val > val) return root.val;//找到比根节点大的就返回
int left = getMinValue(root.left,val);//left为左子树所求的值
int right = getMinValue(root.right,val);//right为右子树所求的值
// 如果都有比根节点大的值,返回较小的那个
if(left >=0 && right >= 0){
return Math.min(left,right);
}
// 如果 左有 右没有 返回左
// 如果 左没有 右有 返回右
// 如果 左没有 右没有 返回任意一个
// 三种情况综合 就是返回最大的那个
return Math.max(left,right);
}
}
LeetCode 872 : 叶子相似的树
描述:
请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。
举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。
class Solution {
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
// 如果两个树的list不相同则为false,否则就是true;
return getNode(root1).equals(getNode(root2));
}
public List<Integer> getNode(TreeNode root){
List<Integer> list = new ArrayList<>();
if(root == null) {
return list;
}
// 左右子树都不存在 就是叶子节点
if(root.left == null && root.right == null){
list.add(root.val);
}
list.addAll(getNode(root.left));
list.addAll(getNode(root.right));
return list;
}
}
我有两个关于这段代码的问题。 double*** pdata 和 int*** pmask 是什么意思?指向指针的指针?为什么或何时需要这样做? int 和 double 是不同的类型,double*
谁能用英文解释一下这是怎么回事? std::vector cats; //I get that cats is a vector of Cat objects if (std::find(cats.b
在C中,下列声明有区别吗: float DoSomething( const float arr[] ); 对比 float DoSomething( const float* arr ); 一个比另
我到 question 36我认为这很简单。像往常一样,我显然错了。我正在尝试在 Python 中执行此操作(因为我不知道 Python)。我的代码如下。我得到 19 作为输出,这显然是不正确的。我不
我已经通读了 MSDN 上的 Winsock2 文档,但如果有人能提供帮助,我仍然需要澄清一些事情。 我计划做一些类似于您在使用 WSAAsyncSelect() 时获得的设置,但使用一个单独的线程。
#include int main () { int *p = (int *)malloc((100*sizeof(int))); p++; free(p); /* do some
我想提供未知的“对象”并返回其成员之一的值。在 C# 中需要响应。 一般来说,我想我正在寻找这个方法的代码公共(public)静态对象 GetObjectMemberValue (object myO
由异常准确的 AI 提供支持的 20 个问题的简单在线游戏。 他们怎么猜得这么好? 最佳答案 您可以将其视为二进制搜索算法。在每次迭代中,我们都会提出一个问题,该问题应该会消除大约一半的可能单词选择。
拜托,有人可以解释一下吗: 如果文档说 STL std::vector finding element speed performace = O(ln(n)),这是什么意思。 O(ln(n)) - 什
我正在尝试通过遵循 Microsoft 为 ADSI API 和 Windows-RS crate 发布的 c++ 示例来使用 Rust 的事件目录。我不太明白这里发生了什么: https://doc
这是处理具有重复元素的单个列表的 nieve 案例,我在处理一些嵌套列表时遇到了麻烦,所以我想先写简单的案例。 所以我有: (defn packDuplicatesIntoLists [lis
我是新来的。我正在尝试解决此练习 Problem 18只是为了加强我的解决能力。我已经编码了答案。该任务要求“在 1,000,000 以下的质数中,有多少个数位之和等于两周中的天数?” (两周是 14
我正在尝试对POCO类中的某些字段进行索引,并将某些属性装饰为“忽略= true”,并且这些字段不应被索引,而应该被存储。我希望这些字段出现在搜索结果中,但不应作为索引。 我正在尝试对应索引的几个字段
我是编码的新手,正在尝试通过完成 Project Euler 问题来学习 Swift。我似乎有导致大量错误的不同版本的 Swift 代码。如果您对我的问题的格式有任何建议以供将来引用,请告诉我,谢谢。
对于problem statement在 google codejam 2008:第 1A 轮问题 3 In this problem, you have to find the last three
我是一名优秀的程序员,十分优秀!