说明:本系列文章面向数据结构与算法复习,除了基础知识复盘还有很多裨益小思考,考研保研笔试面试可用,要备战大厂应聘则难度偏低,因为不涉及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官方在手机移动端加入新建文章分类标签、插入代码块和建目录的功能!!!😎😎😎🤗🤗🤗