题目
给你二叉树的根节点 root 和一个整数 distance 。
如果二叉树中两个 叶 节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。
返回树中 好叶子节点对的数量 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-good-leaf-nodes-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
后序遍历,二叉树直径问题,使用全局变量统计结果
注意枚举长度,不要枚举叶子节点
代码
class Solution {
public:
int num=0;
int countPairs(TreeNode* root, int distance) {
// 后序遍历,二叉树直径问题,使用全局变量统计结果
// 注意枚举长度,不要枚举叶子节点
traverse(root,distance);
return num;
}
unordered_map traverse(TreeNode* root,int distance){
unordered_map mp;
if(root){
if(root->left==nullptr&&root->right==nullptr){
mp[0]=1;
return mp;
}
unordered_map left=traverse(root->left,distance);
unordered_map right=traverse(root->right,distance);
for(int i=0;i // 这里枚举(i,j),不要枚举叶子节点
for(int j=0;j
if(i+j+2<=distance){
num+=left[i]*right[j];
}
}
}
for(int i=0;i
mp[i+1]=left[i]+right[i];
}
}
return mp;
}
};



