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);
}
}