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

每日算法题【二叉树】:计算二叉树节点的个数、叶子结点的个数、第k层节点的个数

(16)计算二叉树节点的个数
  • 解题思路:

    通过前序遍历二叉树,使用三目操作符进行判断,节点为空则返回0,节点不为空递到下一层进行判断并+1,这个+1代表这个不空的根节点。

    递归思想:二叉树总节点个数 等于 左右子树总节点个数 + 1

    int TreeSize(BTNode* root){return root==NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1;
    }
    

(17)计算二叉树叶子节点的个数
  • 解题思路:

    使用前序遍历每个节点,其左右子节点均为空则为叶子结点。

    int TreeLeafSize(BTNode* root){if(root == NULL){return 0;}if(root->left == NULL && root->right == NULL){return 1;}return TreeLeafSize(root->left) + TreeLeafSize(root->right);
    }
    

(18)计算二叉树第k层节点个数
  • 解题思路:

    通过前序遍历二叉树,每递下去一层k-1,k=1时的节点总个数就是结果

    如何返回k层的节点个数:当k=1时,return 1;并通过递归相加即可得到k层总个数

    k为什么要传值而不是地址:因为如果传地址,则遍历左子节点和右子节点递到下一层时都会对同一个k-1

    ​ 而传值才能避免这个问题并保证两子树遍历的层数相同

    int TreeLevelKSize(BTNode* root,int k){if(root == NULL){return 0;}if(k == 1){return 1;}return TreeLevelKSize(root->left,k-1) + TreeLevelKSize(root->right,k-1);
    }
    
http://www.dtcms.com/a/361505.html

相关文章:

  • 【面试场景题】不使用redis、zk如何自己开发一个分布式锁
  • 数据库索引失效的原因+示例
  • 视觉引导机械手双夹爪抓取:偏心旋转补偿与逆运动学求解
  • 卷积神经网络训练全攻略:从理论到实战
  • 【K8s】整体认识K8s之Configmap、Secret/ResourceQuota资源配额/访问控制
  • HTTP/2 多路复用
  • [C语言] 结构体 内存对齐规则 内存大小计算
  • 基于springboot生鲜交易系统源码和论文
  • 一文读懂k8s的pv与pvc原理
  • 威科夫与高频因子
  • 2.充分条件与必要条件
  • Android Framework打电话禁止播放运营商视频彩铃
  • Coze源码分析-工作空间-资源库-前端源码
  • Frida Hook 算法
  • 音频数据集采样率选择建议
  • 从网络层接入控制过渡到应用层身份认证的过程
  • 电源相关零碎知识总结
  • 如何把指定阿里云文件夹下的所有文件移动到另一个文件夹下,移动文件时把文件名称(不包括文件后缀)进行md5编码
  • @Autowired注入底层原理
  • 吴恩达机器学习补充:决策树和随机森林
  • AUTOSAR AP R24-11 Log and Trace 文档总结
  • 贪心算法解决钱币找零问题(二)
  • CentOS10安装RabbitMQ
  • [特殊字符]【C语言】超全C语言字符串处理函数指南:从原理到实战
  • ARM的编程模型
  • TikTok Shop 物流拖后腿?海外仓系统破解物流困局
  • nginx是什么?
  • MQ使用场景分析
  • OpenHarmony 分布式感知中枢深度拆解:MSDP 框架从 0 到 1 的实战指南
  • 2025年- H104-Lc212--455.分发饼干(贪心)--Java版