本次作业是建立二叉树并输出叶结点

(1)首先是定义结点,包括左孩子,右孩子

typedef struct
{
int lch;//左孩子
int rch;//右孩子
}Node;

(2)建立二叉树

 cin>>N;
bool check[100]={false};
for(int i=0;i<N;i++)
{
cin>>x>>y;
if(x!='-')
{
t[i].lch=x-'0';//字符对应数字的ASCII码与0相减,转换成整数类型
check[t[i].lch]=true;
}
else {t[i].lch=-1;}

  定义bool类型数组,初始为false,若t[i].lch不为‘-’,则check[t[i].lch]赋值为true

输入左孩子,为字符型,x-‘-’与ASCII码0相减使其转化为整型,可作为check数组的下标

右孩子则是与左孩子相同操作

for(int i=;i<N;i++)
{
if(!check[i])
{
return i;//未出现过的数即为树的根节点
}
}

用check数组找出未出现的数,该数即为根节点

  queue<int>q;//建立队
q.push(x);//根节点所在下标入队

在遍历二叉树的函数中,是通过队先进先出的特点来对二叉树进行遍历

    if((t[temp].lch == -) && (t[temp].rch == -))

以上情况则为结点的左右孩子都为空,即为叶结点,可输出

若不为空,则用q.push()对结点进行入队操作

    if(t[temp].lch != -)//左结点不为空时,入队
q.push(t[temp].lch);
if(t[temp].rch != -)//右结点不为空时,入队
q.push(t[temp].rch);

本次作业题主要是上课看老师的讲解,课后再自己进行细化,最终得出可以提交成功的代码。

觉得自己有想法,但用代码实现的能力却有限,希望多加锻炼,以此获得更大的提高。

随机推荐

  1. Python第9天

    迭代器(减少代码量增强可读性)和生成器(只能遍历一次):遵循迭代器协议,就是生成可迭代对象 生产者和消费者模型:可触发生成器运行的方法 直接调用next方法 用系统next+生成器的方法 send y ...

  2. Javascript 京东轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. NTP时间服务

    时间服务 NTP:Network Time Protocol 作用:用来给其他主机提供时间同步服务 NTP的配置文件 /etc/ntp.conf NTP相关的命令 date:显示/修改系统时间 hwc ...

  4. Tomcat Server处理一个http请求的过程

    Tomcat Server处理一个http请求的过程 假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp 1) 请求被发送到本机端口8080 ...

  5. Pearson 相关系数--最佳理解及相关应用

    https://blog.csdn.net/wenbingoon/article/details/17414063

  6. java script简介

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...

  7. linux dns域名缓存

    在linux服务器中,我们 总会设置一个dns做域名解析 一般来说dns的缓存是不会造成多大的困扰,但是,有时候会遇到dns解析导致网络不能正常访问 在linux中,有一个缓存服务,我们可以重启这个来 ...

  8. 使用kettle 的repository

    参考文献:原文:https://blog.csdn.net/m0_37979608/article/details/77096201 一.创建资源库的数据库 2.创建数据库资源库,如图 2.1.点击C ...

  9. Oracle导入建表的sql文件类型

  10. freeswitch 使用info显示的通道变量

    2019-01-20 11:57:30.167311 [INFO] mod_dptools.c:1743 CHANNEL_DATA:Channel-State: [CS_EXECUTE]Channel ...