栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

好叶子节点对的数量

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

好叶子节点对的数量

题目
给你二叉树的根节点 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;
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号