【LeetCode
文章目录
- 1、题目描述
- 2、解题思路
- 3、解题代码
1、题目描述
2、解题思路
给每一个节点搭配两个属性:inc 和 dcr 。
其中,inc 表示截至到当前节点的最长连续递增序列的长度,dcr 表示截至到当前节点的最长连续递减序列的长度。
那么,包含当前节点的连续序列路径的长度就是 inc + dec - 1。
接着找到 inc + dec - 1 值最大的节点,返回这个值即可。
3、解题代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {int maxval = 0;public int longestConsecutive(TreeNode root) {longestPath(root);return maxval;}public int[] longestPath(TreeNode root) {if (root == null) {return new int[]{0, 0};}int inr = 1, dcr = 1;if (root.left != null) {int[] l = longestPath(root.left);if (root.val == root.left.val + 1) {dcr = l[1] + 1;} else if (root.val == root.left.val - 1) {inr = l[0] + 1;}}if (root.right != null) {int[] r = longestPath(root.right);if (root.val == root.right.val + 1) {dcr = Math.max(dcr, r[1] + 1);} else if (root.val == root.right.val - 1) {inr = Math.max(inr, r[0] + 1);}}maxval = Math.max(maxval, dcr + inr - 1);return new int[]{inr, dcr};}
}
发布评论