【LeetCode(Java) - 298】二叉树最长连续序列
【LeetCode(Java) - 298】二叉树最长连续序列
文章目录
1、题目描述
2、解题思路
3、解题代码
1、题目描述
2、解题思路
??简单的 DFS 思路:
??1、定义要给全局变量 maxLength;
??2、设计 dfs 函数,功能为:更新 maxLength 变量,函数内部有一个局部变量 length,如果当前节点比父结点大 1,则 length++,否则 lenfth 置为 1,比较 maxLength 和 length,更新为最大值。
3、解题代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int maxLength = 0;
public int longestConsecutive(TreeNode root) {
dfs(root, null, 0);
return maxLength;
}
private void dfs(TreeNode p, TreeNode parent, int length) {
if (p == null) return;
length = (parent != null && p.val == parent.val + 1) ? length + 1 : 1;
maxLength = Math.max(maxLength, length);
dfs(p.left, p, length);
dfs(p.right, p, length);
}
}
【LeetCode(Java) - 298】二叉树最长连续序列相关教程
LeetCode每日一题 (27) 235. 二叉搜索树的最近公共祖先
LeetCode每日一题 (27) 235. 二叉搜索树的最近公共祖先 235. 二叉搜索树的最近公共祖先 这个题目的关键就是 二叉搜索树 (左小右大),需要利用这一个关键信息,要找最近的公共祖先:就是用root当前节点与p和q比较就好,一共用三种情况(1.两个节点都在root的
【LeetCode(Java) - 487】最大连续1的个数 II
【LeetCode(Java) - 487】最大连续1的个数 II 文章目录 1、题目描述 2、解题思路 2.1 数组已知 2.2 数组未知 3、解题代码 3.1 数组已知 3.2 数组未知 1、题目描述 2、解题思路 ??针对每一个 0 都计算出它左右两侧连续的数字 1 的个数,最后返回邻居 1 最多
web前端 --- JavaScrip函数与对象
web前端 --- JavaScrip函数与对象 JavaScrip函数与对象 函数 伪数组arguments 函数:就是将一些语句进行 封装 ,然后通过 调用 的形式,执行这些语句。 作用:将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动;简化编
【LeetCode(Java) - 1258】近义词句子
【LeetCode(Java) - 1258】近义词句子 文章目录 1、题目描述 2、解题思路 3、解题代码 1、题目描述 2、解题思路 ??使用并查集集中管理所有的同义词,然后使用一个 HashMap 存储近义词集合,key 为并查集的 parent,value 为并查集 parent 对应的集合。 ??对
CTF打卡第二天-BUU-Java逆向解密
CTF打卡第二天-BUU-Java逆向解密 解压题目文件发现是一个class文件 使用jad进行反编译,得到Reverse.java文件: 查看Reverse.java文件: // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.// Jad home page: http://www.kpdus.com/jad.html// Dec
【LeetCode(Java) - 1244】力扣排行榜
【LeetCode(Java) - 1244】力扣排行榜 文章目录 1、题目描述 2、解题思路 3、解题代码 1、题目描述 2、解题思路 ??1、使用一个 HashMap 存储参赛者信息; ??2、使用一个 Integer[] 存储参赛者分数从大到小排序的结果。 ??3、使用一个 boolean 变量表示从上
电脑同时安装两个版本的JDK后修改JAVA_HOME后java -version 仍然
电脑同时安装两个版本的JDK后,修改JAVA_HOME后,java -version 仍然是之前的JDK版本的解决办法 之前电脑安装了jdk1.8,现在做项目要求用到jdk11,所以又安装了jdk11,但在jdk11的安装和配置成功后,查看jdk的版本仍然是jdk1.8,这说明jdk切换不成功。具体是
leetcode:500. 键盘行
leetcode:500. 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 class Solution { public String[] findWords(String[] words) { ListString list = new LinkedList(); for(String str : words){ int first = g