第五章学习小结——书和二叉树
一、(1)
(2)树的层次遍历需要用到队列;
(3)如:在一棵度为3的树T中,若有10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点个数为?
答:22个,分支总数 = 10*3 + 1*2 + 10*1 = 42 ,结点总数 = 分支总数+1, 又结点总数=10+1+10+x,得 x=22.
(4)建立二叉树
先把第一个元素拿出来作为根节点;
第二步,把第二个元素拿出来与第一个元素做比较,如果比根节点大就放在右边,如果比根节点小就放在左边;
同样的道理 拿出来第三个元素再与根节点进行比较;
上一步已经把二叉树的第二层填满了,接下来的元素首先要与根节点进行比较,再与子树的节点进行比较;
https://jingyan.baidu.com/album/c910274bfb701ecd361d2deb.html?picindex=1
(5)动态数组
如:int *child=new int[n];
动态数组初始化
a.元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
b.对于内置数据类型元素的数组,必须使用()来显示指定程序执行初始化操作,否则程序不执行初始化操作:
如:int *child=new int[10]// 每个元素都没有初始化
int *child = new int[10] (); // 每个元素初始化为0
c.类类型元素的数组,则无论是否使用(),都会自动调用其默认构造函数来初始化:
string *child = new string[10]; // 每个元素调用默认构造函数初始化
string *child = new string[10](); // 每个元素调用默认构造函数初始化
二、
树和二叉树要能够比较熟练且深刻的掌握递归思路,我还需要再学习再理解;
刚开始我一直在纠结树的逻辑结构和储存结构,在逻辑和实际分析时它是棵树,但在储存上它可能只是一个结构体数组,在做练习、讨论作业后才有个更进一步认识。
三、
图和树也有些联系而且重要,我要在学好图的同时回顾树的知识,再看和分析代码。