数据结构与算法课程笔记(七)
实验七 二叉树的链式存储结构、性质
- 一、实验目的
- 二、实验环境
- 三、实验内容和步骤
一、实验目的
- 了解二叉树的链式存储结构。
- 了解二叉树的相关性质。
二、实验环境
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
数据结构与算法课程笔记(七)相关推荐
- 数据结构计算机专业教学计划编制,数据结构与算法课程设计报告--教学计划编制...
数据结构与算法课程设计报告--教学计划编制 数据结构与算法课程设计报告题目教学计划编制目录一.需求分析311系统概述3111研究背景3112研究意义及目的312具体分析4121功能需求分析4122运行 ...
- 数据结构与算法学习笔记之 从0编号的数组
数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...
- 数据结构与算法学习笔记之 提高读取性能的链表(上)
数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...
- 数据结构与算法-java笔记一 更新中
数据结构与算法-java笔记一 更新中 数据结构与算法 什么是数据结构.算法 数据结构学了有什么用: 线性结构 数组 特点 应用 链表 存储结构 链表类型 单链表 双向链表 双向循环链表 链表与数组的 ...
- 数据结构与算法课程设计之五子棋(人机)
数据结构与算法课程设计之五子棋(人机) 五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏.通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜. 这是 ...
- 数据结构与算法学习笔记——链栈
数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...
- 数据结构与算法学习笔记4:递归+分治法
数据结构与算法学习笔记4 递归 斐波那契数列 青蛙跳台阶问题 链表倒序打印 分治法 二分查找/折半查找 Binary Search 题目1:快速幂 题目2:如何判断一个数是否为2的次幂 递归 指在函数 ...
- 数据结构与算法课程设计大作业
考 核 要 求 课程编号:400802010 课程名称:数据结构与算法课程设计考试形式:大作业 大作业1-9见我的下载 里面包含多个版本的设计 文件有cpp文件设计文档总结等 一.设计 ...
- 数据结构c语言程序设计报告,数据结构与算法课程设计报告模版.doc
数据结构与算法课程设计报告模版.doc 数据结构与算法课程设计报告题 目本科生导师制问题与家族关系查询系统院 (系) 信息科学与工程 专业班级 计算机应用技术1301班 学生姓名 顾 泉 学 号 20 ...
- 数据结构与算法课程设计——C语言《职员薪资查询系统》
数据结构与算法课程设计--C语言<职员薪资查询系统> 温馨提示:课设要自己去操作,自己写代码,可以借鉴他人代码,学习思路和一些操作,切不可完全抄袭!!! 总体说明:设计一个职员薪资查询系统 ...
最新文章
- 常用Maven收集以及Maven技巧
- Palette优化界面色彩搭配
- 1.9 可避免误差-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
- 【漏洞实战】某网站JS文件泄露导致拿到服务器权限
- docker-compose HBase + Phoenix 开发环境单机快速部署
- win10使用自带虚拟机没有Hyper-V场景
- 字符设备驱动基础篇2——用开发板来调试驱动模块的步骤
- .jar文件如何打开_ofd发票文件如何打开
- MSDN i TELL YOU 又更新了,win10 1809版本的 3月29日的
- Java语言和C语言相比,为什么C语言的运算速度会更快,是因为vjm的性能不行么?
- 《美团机器学习实践》—— 读后总结
- 实体框架 Code First 迁移命令
- Rust 1.7.0 处理命令行參数
- 【C++】常用查找算法
- 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!
- openshift安装文档
- 世界各国电压频率和电源插头规格对照表
- JSPL中用fn:contains()判断list中是否包含某个值
- Vijos 1523 贪吃的九头龙 【树形DP】
- Linux(RHEL7及CentOS7)下DNS服务器的搭建与配置