实验七 二叉树的链式存储结构、性质

  • 一、实验目的
  • 二、实验环境
  • 三、实验内容和步骤

一、实验目的

  1. 了解二叉树的链式存储结构。
  2. 了解二叉树的相关性质。

二、实验环境

Windows 7以上版本的操作系统,Visual Studio 2010以上版本的编程环境。

三、实验内容和步骤

1.已知一棵完全二叉树的第6层(设根为第1层)有8个叶子结点,则该完全二叉树的结点个数最多是多少?最少是多少?
答:
最少:(2^5 - 1)+ 8= 31 + 8 = 39
最多:(2^6 - 1) + 48= 63 + 48 = 111

2. 根据下图所示的二叉树,画出其链式存储结构图。

链式存储结构图如下图所示:

3. 在课件目录提供的BiTree 项目中,找出定义二叉树结点类型的相关语句,理解二叉树结点的定义方法。
4. 在 content.cpp 文件中的main函数的 return 0; 语句处设置断点,调试程序,观察此二叉树在内存中的存储结构,加深理解:

5. 在BiTree项目的基础上,使用递归编写
计算二叉树叶子结点个数的函数:

int N0(BTNode *root);//计算二叉树叶子结点个数的函数
int N0(BTNode *root)
{if (root == NULL)return 0;if (root->left == NULL && root->right == NULL)return 1;return N0(root->left) + N0(root->right);
}

与计算二叉树双分支结点个数的函数:

int N2(BTNode *root);//计算二叉树双分支结点个数的函数
int N2(BTNode *root)
{   int n=0;if (root == NULL)return 0;if (root->left != NULL && root->right != NULL)n = 1;return n+ N2(root->left) + N2(root->right);
}

验证二叉树的下列性质:
非空二叉树上的叶子结点个数等于双分支结点个数加1:
即n0 = n2 + 1

答:
因为二叉树中所有结点的度数制均不大于2,所以结点总数(记为n)应等于0度结点数、1度结点(记为n1)和2度结点数(n2)之和: n=no+n1+n2 (式子1)
另一方面,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是: nl+2n2
树中只有根结点不是任何结点的孩子,故二叉树中的结点总数又可表示为:n=n1+2n2+1 (式子2)
由式子1和式子2得到:no=n2+1,即n0=n2+1

数据结构与算法课程笔记(七)相关推荐

  1. 数据结构计算机专业教学计划编制,数据结构与算法课程设计报告--教学计划编制...

    数据结构与算法课程设计报告--教学计划编制 数据结构与算法课程设计报告题目教学计划编制目录一.需求分析311系统概述3111研究背景3112研究意义及目的312具体分析4121功能需求分析4122运行 ...

  2. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  3. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

  4. 数据结构与算法-java笔记一 更新中

    数据结构与算法-java笔记一 更新中 数据结构与算法 什么是数据结构.算法 数据结构学了有什么用: 线性结构 数组 特点 应用 链表 存储结构 链表类型 单链表 双向链表 双向循环链表 链表与数组的 ...

  5. 数据结构与算法课程设计之五子棋(人机)

    数据结构与算法课程设计之五子棋(人机) 五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏.通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜. 这是 ...

  6. 数据结构与算法学习笔记——链栈

    数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...

  7. 数据结构与算法学习笔记4:递归+分治法

    数据结构与算法学习笔记4 递归 斐波那契数列 青蛙跳台阶问题 链表倒序打印 分治法 二分查找/折半查找 Binary Search 题目1:快速幂 题目2:如何判断一个数是否为2的次幂 递归 指在函数 ...

  8. 数据结构与算法课程设计大作业

    考   核   要  求 课程编号:400802010    课程名称:数据结构与算法课程设计考试形式:大作业 大作业1-9见我的下载 里面包含多个版本的设计 文件有cpp文件设计文档总结等 一.设计 ...

  9. 数据结构c语言程序设计报告,数据结构与算法课程设计报告模版.doc

    数据结构与算法课程设计报告模版.doc 数据结构与算法课程设计报告题 目本科生导师制问题与家族关系查询系统院 (系) 信息科学与工程 专业班级 计算机应用技术1301班 学生姓名 顾 泉 学 号 20 ...

  10. 数据结构与算法课程设计——C语言《职员薪资查询系统》

    数据结构与算法课程设计--C语言<职员薪资查询系统> 温馨提示:课设要自己去操作,自己写代码,可以借鉴他人代码,学习思路和一些操作,切不可完全抄袭!!! 总体说明:设计一个职员薪资查询系统 ...

最新文章

  1. 常用Maven收集以及Maven技巧
  2. Palette优化界面色彩搭配
  3. 1.9 可避免误差-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. 【漏洞实战】某网站JS文件泄露导致拿到服务器权限
  5. docker-compose HBase + Phoenix 开发环境单机快速部署
  6. win10使用自带虚拟机没有Hyper-V场景
  7. 字符设备驱动基础篇2——用开发板来调试驱动模块的步骤
  8. .jar文件如何打开_ofd发票文件如何打开
  9. MSDN i TELL YOU 又更新了,win10 1809版本的 3月29日的
  10. Java语言和C语言相比,为什么C语言的运算速度会更快,是因为vjm的性能不行么?
  11. 《美团机器学习实践》—— 读后总结
  12. 实体框架 Code First 迁移命令
  13. Rust 1.7.0 处理命令行參数
  14. 【C++】常用查找算法
  15. 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!
  16. openshift安装文档
  17. 世界各国电压频率和电源插头规格对照表
  18. JSPL中用fn:contains()判断list中是否包含某个值
  19. Vijos 1523 贪吃的九头龙 【树形DP】
  20. Linux(RHEL7及CentOS7)下DNS服务器的搭建与配置

热门文章

  1. ocr带单字坐标离线识别
  2. 我的世界光影Java优化_我的世界7款超级棒的光影包推荐 让你的世界从此变得真实无比...
  3. 【Python】基于Python的行政区划编码字典
  4. js几种加密/解密方法
  5. cudnn下载注意事项
  6. 一文入门RTCM协议及其Message Decode
  7. 高德地图获取经纬度坐标
  8. 锐捷长ping_锐捷 ping 网关通 ping 机器不通
  9. arr访问绝对地址_ECSHOP源码里的图片的相对地址改为绝对地址 (1)
  10. 一个完整的测试计划模板