LeetCode 298. Binary Tree Longest Consecutive Sequence(二叉树最长连续序列)
来源:互联网 发布:阿里云t4机房 编辑:程序博客网 时间:2024/05/14 23:14
原题网址:https://leetcode.com/problems/binary-tree-longest-consecutive-sequence/
Given a binary tree, find the length of the longest consecutive sequence path.
The path refers to any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The longest consecutive path need to be from parent to child (cannot be the reverse).
For example,
1 \ 3 / \ 2 4 \ 5Longest consecutive sequence path is
3-4-5
, so return 3
.2 \ 3 / 2 / 1Longest consecutive sequence path is
2-3
,not3-2-1
, so return 2
.方法:递归遍历,递归函数传入父节点的值,以帮助子节点判断是否连续。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { private int max = 0; private void find(TreeNode root, int parent, int count) { if (root.val == parent+1) count ++; else count = 1; max = Math.max(max, count); if (root.left != null) find(root.left, root.val, count); if (root.right != null) find(root.right, root.val, count); } public int longestConsecutive(TreeNode root) { if (root == null) return 0; max = 1; if (root.left != null) find(root.left, root.val, 1); if (root.right != null) find(root.right, root.val, 1); return max; }}
优化:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { private int max = 1; private void find(TreeNode root, int prev, int len) { if (prev+1 == root.val) len ++; else len = 1; max = Math.max(max, len); if (root.left != null) find(root.left, root.val, len); if (root.right != null) find(root.right, root.val, len); } public int longestConsecutive(TreeNode root) { if (root == null) return 0; find(root, 0, 0); return max; }}
0 0
- LeetCode 298. Binary Tree Longest Consecutive Sequence(二叉树最长连续序列)
- [LeetCode] Binary Tree Longest Consecutive Sequence II 二叉树最长连续序列之二
- [leetcode 298] Binary Tree Longest Consecutive Sequence---求二叉树连续序列的长度
- leetcode 最长连续序列 longest consecutive sequence
- LeetCode(Longest Consecutive Sequence ) 最长连续序列
- Longest Consecutive Sequence (最长连续序列) 【面试算法leetcode】
- LeetCode | Longest Consecutive Sequence(最长连续序列)
- LeetCode 128. Longest Consecutive Sequence(最长连续序列)
- LeetCode--Longest Consecutive Sequence(最长连续序列)Python
- Longest Consecutive Sequence(最长连续序列)
- LeetCode 298. Binary Tree Longest Consecutive Sequence
- LeetCode 298. Binary Tree Longest Consecutive Sequence
- Leetcode 128. Longest Consecutive Sequence 最长连续序列 解题报告
- [LeetCode 128] - 最长连续序列(Longest Consecutive Sequence)
- leetcode 128. Longest Consecutive Sequence 最长连续序列 + HashSet
- Longest Consecutive Sequence 最长连续子序列
- Longest Consecutive Sequence 最长连续子序列
- *[Lintcode]Longest Consecutive Sequence最长连续序列
- 如何根据v$parameter查询Oracle隐含参数
- 树莓派(Raspberry Pi)瞎捣鼓
- 240. Search a 2D Matrix II
- 正整数的中文读法(C++ Python)
- 理解进程调度时机跟踪分析进程调度与进程切换的过程(Linux)
- LeetCode 298. Binary Tree Longest Consecutive Sequence(二叉树最长连续序列)
- Ubuntu校园网不能正常使用ipv6上网
- C++初始化列表
- mysql5.7免安装版报错处理You must reset your password using ALTER USER statement before executing
- Linux~文件/目录操作
- 《大规模分布式存储系统:原理解析与架构实战》读书笔记(1)
- VS2015下编译安装wxWidgets环境
- 关于jdbc的数据库驱动类DriverManager.getConnection()参数
- 去沸点路上的留言板之旅