获得徽章 0
打卡第十五天 今天学习了完全二叉树
以下是一些总结
具有n个结点的完全二叉树的深度为⌊log 2n⌋+1。(向下取整符号类似于3.5求3)
- 叶子结点个数。
- 当n为奇数的时候(即度为1的结点数为0个):n_0 = {n+1}/{2}
- 当n为偶数的时候(即度为1的结点数为1个):n_0 = {n}/{2}
- 任一结点i。
1. 双亲:⌊{i}/{2}⌋
2. 左孩子:2i
3. 右孩子:2i+1
- 在n个结点的二叉链表中。
- 有n+1个空指针域。
- 2n个链域(指针域)。
- 有n-1个链域存放指针,指向非空子女结点。(n-1条边)
以下是一些总结
具有n个结点的完全二叉树的深度为⌊log 2n⌋+1。(向下取整符号类似于3.5求3)
- 叶子结点个数。
- 当n为奇数的时候(即度为1的结点数为0个):n_0 = {n+1}/{2}
- 当n为偶数的时候(即度为1的结点数为1个):n_0 = {n}/{2}
- 任一结点i。
1. 双亲:⌊{i}/{2}⌋
2. 左孩子:2i
3. 右孩子:2i+1
- 在n个结点的二叉链表中。
- 有n+1个空指针域。
- 2n个链域(指针域)。
- 有n-1个链域存放指针,指向非空子女结点。(n-1条边)
展开
评论
点赞
打卡第十三天 因为要备战面试 今天继续学习数据结构
以下是我对二叉树的一些总结
1. 子树有左右之分,次序不能颠倒。
2. 在二叉树第i层上至多有2^{i-1}个结点(i≥1)。
3. 第i层上至少有1个结点。
4. 深度为k的二叉树至多有2^{k}-1个结点。
5. 若k≥1,则深度为k时至少有k个结点。
若k≥0,则深度为k时至少有k+1个结点。
6. n结点数、n0叶子、n1度为1、n2度为2。
n0 = n2+1
总边数:B = n-1 = n2 * 2 + n1 * 1
7. 总结点数:n = n2 * 2 + n1 * 1 + 1
n = n2 + n1 + n0
以下是我对二叉树的一些总结
1. 子树有左右之分,次序不能颠倒。
2. 在二叉树第i层上至多有2^{i-1}个结点(i≥1)。
3. 第i层上至少有1个结点。
4. 深度为k的二叉树至多有2^{k}-1个结点。
5. 若k≥1,则深度为k时至少有k个结点。
若k≥0,则深度为k时至少有k+1个结点。
6. n结点数、n0叶子、n1度为1、n2度为2。
n0 = n2+1
总边数:B = n-1 = n2 * 2 + n1 * 1
7. 总结点数:n = n2 * 2 + n1 * 1 + 1
n = n2 + n1 + n0
展开
评论
点赞
打卡第十天 今天继续学习typescript 遇到了一个很奇怪的问题,关于字面量赋值检测
比如定义了一个接口
IPerson {name:string, age:number}
此时如果再定义一个IPerson类型的变量,有两种情况都不会报错
① const info: Person = {name: 'aka', age: 18}
② const obj = {name: 'aka', age: 18, height: 2.35}
const aka: Person = obj
可以看到,在第二种情况的时候,ts的类型检测此时并不严格。
因为ts只有在初次定义的时候才会进行严格的字面量检测,而对于非初次定义的变量,不会进行严格的检测(不会检测多出来的参数类型)
比如定义了一个接口
IPerson {name:string, age:number}
此时如果再定义一个IPerson类型的变量,有两种情况都不会报错
① const info: Person = {name: 'aka', age: 18}
② const obj = {name: 'aka', age: 18, height: 2.35}
const aka: Person = obj
可以看到,在第二种情况的时候,ts的类型检测此时并不严格。
因为ts只有在初次定义的时候才会进行严格的字面量检测,而对于非初次定义的变量,不会进行严格的检测(不会检测多出来的参数类型)
展开
评论
点赞
小白理解