298. Binary Tree Longest Consecutive Sequence
来源:互联网 发布:中国高铁在欧洲 知乎 编辑:程序博客网 时间:2024/05/05 22:52
Problem
Given a binary tree, find the length of the longest consecutive sequence path.
The path refers to any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The longest consecutive path need to be from parent to child (cannot be the reverse).
For example,
1 \ 3 / \ 2 4 \ 5Longest consecutive sequence path is
3-4-5
, so return 3
.2 \ 3 / 2 / 1Longest consecutive sequence path is
2-3
,not3-2-1
, so return 2
.Solution
从上到下DFS到达某个节点(curNode)时,要想知道当前以它为结束的最长序列长度(curLen)时,
1. 需要知道它的父节点的值(preVal)和以它父节点为结尾的最大长度(preLen)。这样就是需要两个variable preLen 和 preVal传值到当前函数。
2. 因为是从上到下DFS,除了知道以当前节点为结束点的最大长度(curLen)之外,还需要知道它的左右子树的最大长度。
比较三个值的最大值就是结果。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution { int helper(TreeNode* root, int preVal, int preLen){ if(!root) return preLen; int curLen = root->val == preVal + 1 ? preLen + 1 : 1; return max(curLen, max( helper(root->left, root->val, curLen), helper(root->right, root->val, curLen))); }public: int longestConsecutive(TreeNode* root) { if(!root) return 0; return helper(root, 0, root->val - 1); }};
0 0
- 298. Binary Tree Longest Consecutive Sequence
- LeetCode 298. Binary Tree Longest Consecutive Sequence
- LeetCode 298. Binary Tree Longest Consecutive Sequence
- 298. Binary Tree Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- [leetcode] 298. Binary Tree Longest Consecutive Sequence 解题报告
- Leetcode 298. Binary Tree Longest Consecutive Sequence (Medium) (cpp)
- [Leetcode] 298. Binary Tree Longest Consecutive Sequence 解题报告
- leetcode 298: Binary Tree Longest Consecutive Sequence
- Leetcode: Binary Tree Longest Consecutive Sequence
- [LeetCode298]Binary Tree Longest Consecutive Sequence
- Leetcode 298Binary Tree Longest Consecutive Sequence
- [Leetcode]Binary Tree Longest Consecutive Sequence
- svn-eclipse插件的安装
- BZOJ1077 天平
- ubuntu(linux)下source、sh/bash、./ 和 直接 执行脚本的区别
- CSS实现文字随屏幕变化
- jquery animate扩展
- 298. Binary Tree Longest Consecutive Sequence
- Hdu1241Oil Deposits
- 最全常用正则表达式列表
- 对View绘制流程的一些理解
- Codeforces Round #340 (Div. 2)-A. Elephant(贪心)
- 2014年第五届蓝桥杯B组(C/C++)预赛题目及个人答案(欢迎指正)
- C++ 片段
- 跨浏览器兼容性总结
- 【PHP进阶篇 未完】5.正则表达式--慕课网【学习总结】