首页 > 代码库 > Binary Tree Longest Consecutive Sequence III
Binary Tree Longest Consecutive Sequence III
Note:
This question is good summary for this kind of problem.
1) Once you get the root, loop through all the children. Get the max up/down/max from the children.
2) set root max = up + down + 1, then comparing with the max got from the children.
3) Return the max, current up and down.
/** * Definition for a multi tree node. * public class MultiTreeNode { * int val; * List<TreeNode> children; * MultiTreeNode(int x) { val = x; } * } */ public class Solution { /** * @param root the root of k-ary tree * @return the length of the longest consecutive sequence path */ private class ResultType { int max; int up; int down; public ResultType(int max, int up, int down) { this.max = max; this.up = up; this.down = down; } } public int longestConsecutive3(MultiTreeNode root) { // Write your code here return findLongestConsecutive(root).max; } private ResultType findLongestConsecutive(MultiTreeNode root) { if (root == null) { return new ResultType(0, 0, 0); } int up = 0, down = 0, max = 1; //at least max could be 1; //In the loop, we need to get the max up, down, max from root‘s child for (MultiTreeNode child : root.children) { ResultType childRst = findLongestConsecutive(child); if (child != null && child.val + 1 == root.val) { down = Math.max(down, childRst.down + 1); } if (child != null && child.val - 1 == root.val) { up = Math.max(up, childRst.up + 1); } max = Math.max(max, childRst.max); // } max = Math.max(up + down + 1, max); return new ResultType(max, up, down); } }
Binary Tree Longest Consecutive Sequence III
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。