题意:统计相同节点值的最大路径长度,两点间的最大路径代表两点间边的个数。
/** * 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 { public: int ans; int dfs(TreeNode* root){ if(root == NULL) return 0; int left = dfs(root -> left); int right = dfs(root -> right); if(root -> left && root -> val == root -> left -> val){ ++left; } else{ left = 0; } if(root -> right && root -> val == root -> right -> val){ ++right; } else{ right = 0; } ans = max(ans, left + right); return max(left, right); } int longestUnivaluePath(TreeNode* root) { ans = 0; dfs(root); return ans; } };