数据结构与算法随机复习–Day1

说明:本系列文章面向数据结构与算法复习,除了基础知识复盘还有很多裨益小思考,考研保研笔试面试可用,要备战大厂应聘则难度偏低,因为不涉及dp等高阶应用算法、海量数据优化处理和边界条件等特细节考量。复习采用

{手写代码(多是C++)→AI辅助诊察(Loop【→返修→AI辅助诊察】)→讨论与总结}

的形式开展,更新不定期,欢迎持续关注,有更优解法可以直接在评论区呈现。

Day1直接上二叉树里面的热门考点------统计节点数和叶子节点(度为2)数,组合起来可以计算内部节点数。对于完全二叉树(Complete Binary Tree)的场景,也可以直接通过总节点数计算叶子结点数。核心思路是递归调用,可以使用AI后面建议的双递归或者单递归调用(我的一种实现)😄。

说明:此处省略二叉树结构体(我认为不能使用类)的定义,在main函数内部用...占位。

一、普通二叉树总节点数计算(完全二叉树可导出计算叶子结点数)

二、普通二叉树叶子节点数目计算

三、裨益思考与AI辅助诊察

可读性更强但占用更多栈空间(优化方向)的双递归(总节点个数只需要在return表达式内+1)

int countLeafNodes(btree* root) {

if (root == nullptr) return 0;

if (root->left == nullptr && root->right == nullptr) return 1;

return countLeafNodes(root->left) + countLeafNodes(root->right);

}

写在最后:为提升创作便捷性,建议CSDN官方在手机移动端加入新建文章分类标签、插入代码块和建目录的功能!!!😎😎😎🤗🤗🤗

相关推荐
生成论实验室2 小时前
《事件关系阴阳博弈动力学:识势应势之道》第八篇:认知与反思关系——探索、定位与延续
人工智能·算法·架构·知识图谱·创业创新
十五年专注C++开发2 小时前
浅谈LLVM
开发语言·c++·qt·clang·llvm
YaraMemo2 小时前
一文带你区分全局最优解和帕累托最优解
算法·5g·信息与通信·信号处理
白夜11172 小时前
C++(标签派发 Tag Dispatching)
开发语言·c++·笔记·算法
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串基础】:凯撒密码
c++·字符串·csp·凯撒密码·高频考点·信奥赛·一等奖
YaraMemo3 小时前
数学优化问题中的三大转化:多目标转化为单目标,多变量转化为单变量,有约束转化为无约束
人工智能·算法·5g·信息与通信·信号处理
CSCN新手听安3 小时前
【Qt】Qt窗口(六)QMessageBox消息对话框的使用
开发语言·c++·qt
Ailan_Anjuxi3 小时前
【附Python源码】使用minGPT训练自己的小型GPT语言模型
算法
会编程的土豆3 小时前
由c/c++速通go语言,新手必看
c语言·c++·golang