687. Longest Univalue Path

้€™้กŒๅ…ถๅฏฆๅฐฑๆ˜ฏ base on

543 Diameter of Binary Tree (post order

https://labuladong.github.io/algo/di-yi-zhan-da78c/shou-ba-sh-66994/dong-ge-da-334dd/arrow-up-right

ๅ†ๅŠ ไธŠ่ฆๆชขๆŸฅ prev val ไธ€ๆจฃๅฐฑๅฏไปฅ

ๅ› ็‚บๆœ€้•ท็š„ path ๆœ‰ๅฏ่ƒฝๅ‡บ็พๅœจๆœ‰ๅ€‹่ฝ‰ๆŠ˜็š„้€™่ฃก

ๆ‰€ไปฅๆฑ‚ๅทฆ๏ผ‹ๅณ ๆœ€ๅคง Math.max(left+right, result)

ไฝ†ๆœ€ๅพŒ ๏ผˆ็•ถๅ‰็ตๆžœๅŒ…ๅซๆœฌ่บซ็š„้ปž, ไธๆ˜ฏ path

return max(left, right)+1

```java
class Solution {
    int result = 0;
    public int longestUnivaluePath(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        dfs(root, root.val);
        return result;
    }
    private int dfs(TreeNode node, int prev) {
        if (node == null) {
            return 0;
        }
        int left = dfs(node.left, node.val);
        int right = dfs(node.right, node.val);
        result = Math.max(result, left + right);
        if (node.val == prev) {
            return Math.max(left, right) + 1;
        }
        return 0; // node.val != prev
    }
}
```

ไปฅไธ‹้€™ๅšๆณ•ๆ˜ฏไปฅๆฑ‚็ฏ€้ปž(ๅŠ ไธŠ้‚ฃๅ€‹ๆ‹้ปž)็š„่ง’ๅบฆๅŽป็œ‹็š„...ๆ‰€ไปฅ+1

ไฝ†ๆœ€ๅพŒ-1

T: O(n)

S: O(h), worst O(n)

Last updated