数据结构第五章小结
时间:2020-05-30
本文章向大家介绍数据结构第五章小结,主要包括数据结构第五章小结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第五章主要学习新的数据结构:树;
个人觉得难点在于线索二叉树部分,虽说没有要求大程度掌握,自己可能还得多看看
思维导图如下:
知识点记录:
在树的结点个数与边:自下向上看,根结点是唯一一个没有带边的结点,即结点数为边数+1。
在第五章学习过程中
纠错点:
int n; cin>>n; int a[n];//这种定义数组的方法在c语言中是合法,但在c++中并不合法 int n; cin>>n; int *a =new int[n];//这种是合法的; 两者区别在于:如果n过大 前者申请的栈空间,其空间有限,可能会造成越界访问; 而堆空间却不用担心这样的问题出现。
学习
一、本章代码:大多算法都是使用的递归
实践1题:树的同构
一开始传入的为两棵树的根结点 bool judge(int t1 ,int t2) { if(t1==-1&&t2==-1) return 1;//都为空 if(T1.data[t1].num!=T2.data[t2].num) return 0;//结点不相同 //根据传入数据(根结点/左孩子/右孩子),定位编码 else {//无需讨论左/右孩子是否均为空,利用递归判断if(t1==-1&&t2==-1)是否均为空、 //if(T1.data[t1].num!=T2.data[t2].num)是否不相同即可 if(judge(T1.data[t1].lch,T2.data[t2].lch)&&judge(T1.data[t1].rch,T2.data[t2].rch)) return 1;//要么左左比较,右右比较 else if(judge(T1.data[t1].rch,T2.data[t2].lch)&&judge(T1.data[t1].lch,T2.data[t2].rch)) return 1;//要么左右比较 else return 0;//两者均不成立 } }
实践2题:是否同一棵二叉搜索树
第一种思路: 分别构建树,用递归去判断两个树是否相同; 第二种思路:利用二叉搜索树中根结点与左子树、右子树的大小对比特点; 例子: 3 1 4 2; 3 4 1 2; 将在输入过程中将比树的根结点小的放入左队列,大的放入右队列; 再构建一个函数,分别两个树对应的队列进行比较; 第三种思路: 分别构建树,进行层次遍,利用队列,将两棵树从根结点开始一一比较, 一有不相等则输出:No,break出循环;如果遍历到整个结束则输出Yes;
小组合作:最深的叶子结点
在看到小测题的时候,第一反应便是怎么求出深度,也许就是老师说的带错节奏;
整个过程都没有想到利用层次遍历来解决,此算法可以避免求深度
互评过程中蛮多小组都想到了层次遍历,值得学习。
二、、spoc讨论
1、哈夫曼树
哈夫曼树虽是最优的,但不一定唯一的;
可以通过调换同层次的叶子结点来获取与哈夫曼树权值相同的树
2、相应存储类型定义
int a[1000]; int b[1000]; 相当于 typedef int array[1000];//typedef Telemtype sqitree[maxsize];的实际例子 array a,b;
原文地址:https://www.cnblogs.com/sjjgcxn/p/12990201.html
- 简单易学的机器学习算法——线性回归(2)
- Java基础-26(01)总结网络编程
- undo retention的思考(一)
- 优化算法——人工蜂群算法(ABC)
- 用GPU加速深度学习: Windows安装CUDA+TensorFlow教程
- 由报警邮件分析发现的备库oracle bug(r7笔记第12天)
- Python中的__init__()方法整理中(两种解释)
- 如何找到最优学习率?
- 简单易学的机器学习算法——Rosenblatt感知机
- 多级复制的数据不同步问题(r7笔记第11天)
- 简单易学的机器学习算法——Logistic回归
- Python 用OPEN读文件报错 ,路径以及r
- Oracle 12c PDB浅析(r9笔记第10天)
- merge语句导致的CPU使用率过高的优化(二) (r7笔记第9天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python数据分析之Seaborn(分类分析绘图 )
- Python数据分析之Seaborn(热图绘制)
- Python数据分析之matplotlib(3D绘图)
- 一看就懂的Tensorflow实战(Tensorflow入门)
- 一看就懂的Tensorflow实战(线性回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型Eager API)
- 聊聊dubbo-go的DubboProtocol
- 一看就懂的Tensorflow实战(最近邻)
- 一看就懂的Tensorflow实战(随机森林)
- 一看就懂的Tensorflow实战(多层感知机)
- 一看就懂的Tensorflow实战(卷积神经网络)
- 一看就懂的Tensorflow实战(多层感知机模型Eager API)
- 一看就懂的Tensorflow实战(K-Means模型)
- 一看就懂的Tensorflow实战(模型的保存与读取)