当前位置: 首页 > news >正文

从根到叶的二进制数之和(霍纳法则)

给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。

  • 例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。

对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。

返回这些数字之和。题目数据保证答案是一个 32 位 整数。

示例 1:

输入:root = [1,0,1,0,1,0,1]
输出:22
解释:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22

示例 2:

输入:root = [0]
输出:0

提示:

  • 树中的节点数在 [1, 1000] 范围内
  • Node.val 仅为 0 或 1 

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {int sum=0;void sumRoot(TreeNode* root,int pre){if(!root->left&&!root->right){//如果是叶子节点sum+=pre*2+root->val;//向左进一位再添加当前值return;}if(root->left){//如果left非空继续往下计算sumRoot(root->left,pre*2+root->val);}if(root->right){sumRoot(root->right,pre*2+root->val);}          }
public:int sumRootToLeaf(TreeNode* root) {sum=0;sumRoot(root,0);return sum;}
};

我们都知道二进制转十进制的计算为\sum_{i=0}^{n}a_{n}2^{n}

eg:

1001=1*2^{0}+0*2^{1}+0*2^{2}+1*2^{3}=9

这样的话我们的时间复杂度为O(n^2)

而如果我们使用霍纳法则进行求解则为

1+2*(0+2*(1*2))时间复杂度为O(n)

http://www.dtcms.com/a/392446.html

相关文章:

  • 隐私与合规内建:Python医疗AI编程中的SBOM、依赖监测与威胁建模实践分析(上)
  • 基于实战:如何高效调用陌讯AIGC检测RESTful API进行批量内容审核
  • 如何用kimi写一个最小excel软件
  • Ansible-script模块
  • ansible批量给网络设备下发配置
  • 使用 Bright Data Web Scraper API Python 高效抓取 Glassd
  • uni-app 用scroll-view实现横向滚动
  • Kafka 图形界面客户端工具
  • 【开题答辩全过程】以 Php产品报价系统的设计与实现为例,包含答辩的问题和答案
  • 软件测试基础知识(网络协议)
  • 手机中的轻量化 AI 算法:智能生活的幕后英雄
  • wo店模式兴起旧模式式微:本地生活服务市场的深度变革
  • 服务器磁盘空间满了怎么办?阿里云ECS清理与云盘扩容教程
  • OpenAI推出更擅长AI代理编码的GPT-5-Codex,与Claude code有何区别?国内怎么使用到Codex呢?
  • GPT-5 深度测试报告:前端编程能力专项评估
  • AIGC发展:从GPT-1到GPT-4的技术演进与行业革新
  • 从AI生成到学术表达:如何有效降低AI率,实现论文合规化写作
  • 【国二】C语言选择题精华速记
  • 聊聊和AutoDL的故事
  • 【状态机实现】前置——设计模式中的孪生兄弟(状态模式和策略模式)
  • 【LeetCode - 每日1题】设计路由器
  • springboot宠物领养救助平台的开发与设计(代码+数据库+LW)
  • CSS的三大特性
  • 实现excel的树形导出
  • 基于Matlab的GPS/北斗系统抗脉冲与窄带干扰算法研究及仿真验证
  • linux之负载均衡Nginx+多开Tomcat
  • 浏览器私有前缀、CSS3:2D转换、动画、3D转换
  • Redis核心面试知识点汇总
  • Java面试宝典:核心基础知识精讲
  • Python9-逻辑回归-决策树