笔记:武汉理工大学2015年计算机考研复试 算法笔试题解1
2023-09-27 14:19:45 时间
题目:非递归遍历二叉树求单孩子节点个数
分析:因为要非递归,所以需要用到栈来解决,使用前序遍历栈的方法来遍历,遍历时检测出栈的元素的孩子节点个数。
题解:
struct node//树的结点
{
int val;
node* left;
node* right;
};
struct nodestack//放结点的栈
{
int topid;
node data[64];
};
int function1(node root)
{
int onechild=0;//记录单孩子结点的个数
node tempNode = root;
nodestack tempStack;
tempStack.topid=-1;
while(tempStack.topid!=-1||tempNode!=NULL)//按先序遍历
{
while(tempNode!=NULL)//沿着左依次压进栈,并输出根
{
cout<<tempNode.val;
tempStack.topid++;
tempStack.data[tempStack.topid] = tempNode;//压栈
tempNode=tempNode.left;
}
node topNode = tempStack.data[tempStack.topid];//顶部出栈
tempStack.topid--;
if(topNode->left!=NULL&&topNode->right==NULL)//有左孩子没右孩子
onechild++;
if(topNode->left==NULL&&topNode->right!=NULL)//有右孩子没左孩子
onechild++;
tempNode = topNode->right;
}
}
相关文章
- 机器学习算法(优化)之二:期望最大化(EM)算法
- 【JVM笔记】GC算法和GC收集器详解
- Apollo星火计划学习笔记——Apollo速度规划算法原理与实践
- 基于K-means聚类算法进行客户人群分析
- 【计算机视觉】运动目标检测算法文献阅读笔记
- 【计算机视觉】运动目标检测算法文献阅读笔记
- java实现八种排序算法并测试速度
- 决策树算法笔记
- KNN-机器学习算法
- STL迭代器与部分算法学习笔记
- 分布式自增ID算法-Snowflake详解
- 你搞懂朴素贝叶斯分类算法
- Java基础复习笔记基本排序算法
- 《图解算法》学习笔记之递归
- 第4章 最基础的分类算法-k近邻算法 kNN 学习笔记 下
- 算法基础笔记
- 十大经典排序算法的 JavaScript 实现
- TensorFlow学习笔记之五——源码分析之最近算法
- Java-课程设计-贪吃蛇(BFS算法AI | 编辑地图)
- 【Java】Java复习笔记-三大排序算法,堆栈队列,生成无重复的随机数列
- 复杂度分析(算法训练营开课准备笔记)
- java常用的7大排序算法汇总
- 2. Linux-3.14.12内存管理笔记【系统启动阶段的memblock算法(2)】
- 【0基础学算法】前缀和 (超详细讲解+私人笔记+源码)
- python实现图的相关算法-左程云视频笔记-更新中