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

(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. wdk1703+vs2015编译的诡异问题

    最近将wdk升级到1703(10.0.15063.0)版本,编译一个新建的minifiter项目居然出现了失败 提示错误为 WindowsDriver.common.targets(460,5): e ...

  2. django 创建视图和APP

    .创建视图views 1.在项目目录下创建views.py文件 2.from django.http import HttpResponse 3.在urls 导入模板: from django.con ...

  3. Python学习笔记---数 数据类型 运算

    python的四种数类型: 整数 int 浮点型 float 布尔 boolen 复数 complex >>> type(5)<class 'int'>>>& ...

  4. python_13 面向对象

    面向对象 类:把一类事物的相同特征和动作整合到一起就是类,类是一个抽象的概念 对象:就是基于类出而创建的一个具体的事物或实例(具体存在),其特征和动作整合到一起 面向对象设计:将一类具体事物的数据和动 ...

  5. ---- 关于Android蓝牙搜索到设备的图标显示和设备过滤

    根据: https://www.douban.com/note/637446089/http://bbs.16rd.com/blog-23795-3446.html 以下摘自原文: (Android主 ...

  6. hbase概述和安装

    前言 前几天刚学了Hadoop的安装,几乎把Hadoop的雷都踩了一个遍,虽然Hadoop的相关的配置文件以及原理还没有完全完成,但是现在先总结分享一下笔者因为需要所整理的一些关于Hbase的东西. ...

  7. 基于Keepalived的MySQL高可用

    keepalived负责的是故障转移,至于故障转以后的节点之间数据的一致性问题依赖于具体的复制模式.不管是主从.一主多从还是双主.集群节点个数.主从具体的模式无关(常规复制,半同步复制,GTID复制, ...

  8. IDEAL启动项目的时候报java.lang.NoClassDefFoundError: javax/servlet/Filter错误

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  9. vue_element_vue 引入路径@

    build/webpack.base.conf.js resolve: { extensions: ['.js', '.vue', '.json'], alias: { '@': resolve('s ...

  10. 通过微信公众号API复制公众号自定义菜单同时增加子菜单方法

    主要的原因是再不破坏公众号以前的菜单的基础上增加自定义菜单,主要步骤如下: 1.通过微信提供的微信公众平台接口调试工具获取公众号的所有自定义菜单 网址:https://mp.weixin.qq.com ...