687. 最长同值路径
C代码:DFS
int res; // int res = 0; 这种初始化有问题
int dfs(struct TreeNode* root, int val) {
if (root == NULL) {
return 0;
}
int left = dfs(root->left, root->val);
int right = dfs(root->right, root->val);
res = fmax(res, left + right); // 后序遍历
return root->val == val ? fmax(left, right) + 1 : 0; // 往上返回一条边数
}
int longestUnivaluePath(struct TreeNode* root){
if (!root) {
return 0;
}
res = 0;
dfs(root, root->val);
return res;
}