549. 二叉树中最长的连续序列
Posted yonezu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了549. 二叉树中最长的连续序列相关的知识,希望对你有一定的参考价值。
class Solution { public int longestConsecutive(TreeNode root) { dfs(root); return res; } private int res = 0; public int[] dfs(TreeNode root) { // 以root开始, path[0]:root为增位置的最长路径 path[1]:root为减位置的最长路径 int[] path = new int[]{1,1}; if(root == null) return null; // return什么没关系,左右子树为null不参与判断 int[] left = dfs(root.left); int[] right = dfs(root.right); if(root.left != null) { if(root.left.val - root.val == 1) { // 递减 path[1] += left[1]; } if(root.left.val - root.val == -1) { path[0] += left[0]; } } if(root.right != null) { if(root.right.val - root.val == 1) { path[1] = Math.max(path[1],right[1]+1); } if(root.right.val - root.val == -1) { path[0] = Math.max(path[0],right[0]+1); } } res = Math.max(res,path[0]+path[1]-1); return path; } }
以上是关于549. 二叉树中最长的连续序列的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列