298. Binary Tree Longest Consecutive Sequence
Binary Tree Longest Consecutive Sequence
Solution
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int longestConsecutive(TreeNode root) {
Result result = get(root);
return Math.max(result.include, result.nonInclude);
}
private Result get(TreeNode root) {
if (root == null) return new Result(0, 0);
Result leftResult = get(root.left);
Result rightResult = get(root.right);
int nonInclude = Math.max(Math.max(Math.max(leftResult.include, rightResult.include), leftResult.nonInclude), rightResult.nonInclude);
int include = 1;
if (root.left != null && root.val + 1 == root.left.val) {
include = Math.max(include, leftResult.include + 1);
}
if (root.right != null && root.val + 1 == root.right.val) {
include = Math.max(include, rightResult.include + 1);
}
return new Result(include, nonInclude);
}
private class Result {
int include;
int nonInclude;
public Result(int include, int nonInclude) {
this.include = include;
this.nonInclude = nonInclude;
}
}
}Last updated