【LeetCode(Java) - 298】二叉樹最長連續序列

學哥斌發表於2020-09-27

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

相關文章