继续练习二叉树,原题目链接:把二叉树打印成多行。 题目描述: 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路: 从上到下打印,从左到右输出;实质是要考察二叉树的遍历,不同于三种常用的遍历。 首先从根节点开始遍历;遍历到每个结点,就把该结点的左右结点一起存起来;由于需要返回 ...
分类:
其他好文 时间:
2020-06-01 14:06:37
阅读次数:
51
本章学习的内容为树 定义:树是一个n(n>=0)个结点的有序合集 结点:指树中的一个元素; 结点的度:指结点拥有的子树的个数,二叉树的度不大于2; 数的度:指树中的最大结点度数; 叶子:度为0的结点,也称为终端结点; 高度:叶子节点的高度为1,根节点高度最高; 层:根在第一层,以此类推; 二叉树的定 ...
分类:
其他好文 时间:
2020-06-01 01:10:47
阅读次数:
65
1.二叉树的遍历以及哈夫曼树是本章的重点。通过PTA和小组讨论,让我更能想清楚二叉树在存储的时候的模样,也能利用链式和顺序结构操作二叉树,总结如下;哈夫曼树比较清晰,主要是构造(要点是先取权值最小的树作为左右子树构造一棵新的二叉树)与计算WPL=(该结点的权值*对应的结点的路径长度)的求和。 2 / ...
分类:
其他好文 时间:
2020-05-31 21:22:57
阅读次数:
59
第五章首先学了树的定义和树的基本术语,我觉得比较重要的是结点的度(结点拥有的子树数)和数的度(树内各结点度的最大值)。然后引入了二叉树的定义,它可以是空树,也可以是非空树,知道了二叉树有5种基本形态。接着了解了树和二叉树的ADT。还学了二叉树的性质和满二叉树(每一层上的结点数都是最大结点数,即每一层 ...
分类:
其他好文 时间:
2020-05-31 19:39:17
阅读次数:
69
本章学习了树和二叉树(树的结构定义是一个递归的定义,即在树的定义中又用到树的定义) 1.树的定义:有且只有一个根节点,其余节点分为n个有限集,每个集合为根的子树,若只有根节点,称为只有根节点的树(分等级的分类方案都可由一个树结构来表示) 2.度与深度:节点的度:该节点拥有几个子树,就为几 树的度:最 ...
分类:
其他好文 时间:
2020-05-31 13:19:05
阅读次数:
74
思路: 通常我们进行二叉树的遍历(前序遍历、中序遍历和后序遍历)时,不考虑空节点。但有时需要我们将空节点也放入遍历序列中。 由于考虑了空节点,不能再用是否为空作为递归结束的条件。容易想到,只要一个节点非空,并且它的左右叶节点不同时为空,则其左右叶节点均要被遍历。这样我们就得到了考虑空节点的遍历。 以 ...
分类:
其他好文 时间:
2020-05-31 13:09:56
阅读次数:
116
学习进度表 周数 学习内容 新增代码 知识总结 第9周 队列的定义与存储 50 知道了队列的定义 第10周 树的基本概念 二叉树的遍历 60 了解了二叉树的遍历方式 及代码运用 第11周 哈夫曼树编码 0 哈夫曼树编码构造过程 第12周 图的基本概念与存储 65 图的存储结构及代码运用 ...
分类:
其他好文 时间:
2020-05-17 19:12:50
阅读次数:
47
递归实现结构很好记,上来写两递归,递归左子树,递归右子树。 前序遍历,访问节点(打印节点)在两个递归前面——中、左、右; 中序遍历,访问放递归中间——左中右; 后序遍历,先两递归,最后才访问——左、中、右。 1)先序遍历void preorder(BiTree T){ if (T != NULL) ...
分类:
其他好文 时间:
2020-05-14 15:51:55
阅读次数:
66
回溯算法就是个多叉树的遍历问题,关键就是在前序遍历和后序遍历的位置做一些操作,算法框架如下: result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, ...
分类:
编程语言 时间:
2020-05-13 00:38:31
阅读次数:
81
前几天学数据结构时做了一个实验是关于二叉树遍历的,下面代码我会分享几种遍历方式。 1 #include<iostream> 2 #include<stack> //头文件 3 #include<queue> //头文件 4 using namespace std; 5 typedef struct ...
分类:
其他好文 时间:
2020-05-10 13:06:11
阅读次数:
69