博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode#递归#1530. 好叶子节点对的数量
阅读量:3952 次
发布时间:2019-05-24

本文共 2017 字,大约阅读时间需要 6 分钟。

给你二叉树的根节点 root 和一个整数 distance 。

如果二叉树中两个 叶 节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。

返回树中 好叶子节点对的数量 。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/number-of-good-leaf-nodes-pairs/

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode() {} *     TreeNode(int val) { this.val = val; } *     TreeNode(int val, TreeNode left, TreeNode right) { *         this.val = val; *         this.left = left; *         this.right = right; *     } * } */class Solution {
int count = 0; public int countPairs(TreeNode root, int distance) {
if(root ==null) return 0; Tree tree = new Tree(root); tree.dfs(root.left,root.right,1,1 ,distance); count += tree.count; countPairs(root.left,distance); countPairs(root.right,distance); return count; } static class Tree {
TreeNode root; int count; Tree(TreeNode root) {
this.root = root;} void dfs(TreeNode left,TreeNode right,int dl,int dr,int depth) {
//减枝,避免空指针 if(left==null ||right ==null || dl>depth || dr>depth) return; if(isLeaf(left) && isLeaf(right)) {
if(dl+dr<=depth) count +=1; }else if(isLeaf(left)) {
dfs(left,right.right,dl,dr+1,depth); dfs(left,right.left,dl,dr+1,depth); }else if(isLeaf(right)) {
dfs(left.left,right,dl+1,dr,depth); dfs(left.right,right,dl+1,dr,depth); }else {
//都不是叶子节点 dl++;dr++; dfs(left.left,right.right,dl,dr,depth); dfs(left.right,right.left,dl,dr,depth); dfs(left.left,right.left,dl,dr,depth); dfs(left.right,right.right,dl,dr,depth); } } boolean isLeaf(TreeNode root) {
return root!=null && root.left==null && root.right==null; } }}

转载地址:http://pzyzi.baihongyu.com/

你可能感兴趣的文章
2018年大数据趋势 :人工智能... 数据分析将包含可视化模型...
查看>>
他用python做了个小游戏,然后...
查看>>
用 Python分析胡歌的《猎场》到底值不值得看?
查看>>
程序员的心理活动,扎心了!
查看>>
从零开始用Python构造决策树(附公式、代码)
查看>>
精华 | 12个关键词告诉你告诉你什么是机器学习(基础篇)
查看>>
15个优秀的开源项目,让你轻松应对Android开发
查看>>
正态分布为什么常见?
查看>>
2018年大数据趋势 :人工智能,机器学习等统统有讲到!
查看>>
20+案例教你可视化图表的设计方法
查看>>
开发者不可错过的开源项目 —— 人工智能篇
查看>>
微信身份证即将推行,AI成主要证明技术
查看>>
黑客到底可以厉害到什么程度?
查看>>
干货|多重预训练视觉模型的迁移学习
查看>>
【视点】从一些实例看大数据部门的权与责
查看>>
一文读懂背包问题
查看>>
一位像素艺术家用39张动图,将大自然的唯美尽收眼底…
查看>>
2017论文回顾 | Yann LeCun:中英日韩语文本分类通用编码机制(附论文下载)
查看>>
【干货】人人都能看懂的LSTM
查看>>
教你用百度地图API抓取建筑物周边位置、房价信息(附代码)
查看>>