首页
学习
活动
专区
工具
TVP
发布

老沙课堂

专栏成员
27
文章
18231
阅读量
12
订阅数
数据结构与算法(十二) 红黑树
•节点是有颜色的Red/Black•根节点必须是Black•叶子节点必须是Black•红黑树的叶子节点会自动将度为0 或者度为1的节点的度自动补充为2,补充的节点称之为外部节点•外部节点是空想出来的,代码中不会实现•red节点的子节点都是black色•从任意一节点到叶子节点的所有路径包含的black节点数目相同•这里说的叶子节点包含假想出来的叶子节点
老沙
2019-10-23
5400
据结构与算法(十) AVL树
因为无法改变添加删除顺序(用户操作决定),所以在每次操作之后,让二叉树达到平衡状态。
老沙
2019-10-15
5680
数据结构与算法(九)二叉搜索树的删除操作
•前驱节点:中序遍历时的前一个节点•如果左子树存在,从该节点的左子节点的最右的节点。•如果左子树 == null && 父节点!= null 父节点为父节点遍历,一直到节点关系发生改变。如下图所示。•如果左子树 == null && 父节点== null ,没有前驱节点。
老沙
2019-10-15
8700
据结构与算法(八) 二叉树的练习
•设定levelSize初始值为1(只有一个根节点)•当进行while循环的时候 levelsize-- 操作。因为levelSize和每层节点个数相等。所以当levelSize为0的时候,下一个levelSize的大小就等于此时在队列中的元素个数。•当levelSize== 0的时候 •进行赋值下一层的个数 levelSize = queue.size()•此时代表一个层级遍历结束 height++
老沙
2019-10-15
5620
数据结构与算法(六) 二叉树遍历
•任意一个节点的值都大于其左子树的值•任意一个节点的值都小于其右子树的值•他的左右子树也是一颗二叉搜索树•二叉搜索树可以大大提高效率(搜索和添加删除时间复杂度都是logn)•二叉搜索树的元素必须是具备可比较性•自定义类型需要指定比较方式•不允许为null•二叉树没有索引的概念
老沙
2019-10-11
4800
数据结构与算法(五) 队列
•先进先出原则(First In First Out) FIFO•队尾(rear):只能进行入队操作(enQueue)->添加元素•队头(front):只能进行出队(deQueue) ->取出元素•一般底层由双链表来实现
老沙
2019-10-11
4410
数据结构与算法(四)栈
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
老沙
2019-10-09
4240
数据结构与算法(三)链表
•插入操作的时候 如果想在角标1添加,要找到角标1的上一个元素。•边界问题 例如首个元素添加 以及最后一个元素添加
老沙
2019-09-30
3690
TaggedPointer
由于test 修饰为nonatomic 所以是线程不安全的。当多条线程同时访问,造成多次release ,所以坏内存访问。
老沙
2019-09-29
3530
isa详解(二)cache和散列表
源码中查找 objc_destructinstance 销毁一个实例对象。发现需要进行相关判断。所以如果没有的话。释放更快
老沙
2019-09-28
5360
super(二) 以及内存分布
在ViewController 书写以下代码。问是否能编译通过,如果可以输出什么是什么?
老沙
2019-09-28
6190
多线程(一) 有关死锁以及串行并发同步异步概念
performSelector: withObject: 底层调用[self msgSend];
老沙
2019-09-28
7290
Objective 锁
由于锁是自旋锁,线程不会休眠,所以当低优先级线程先对操作进行Lock造作后,CPU调度高优先级线程造作,由于低优先级别UnLock就调用高优先级线程。高优先级无法处理该操作,而高优先级线程一直调用CPU资源, 系统等待高优先级线程执行完毕后才给低优先级线程资源。
老沙
2019-09-28
6410
iOS读写安全
给属性添加atomic 可以保证属性的setter和getter原子性操作,也就是保证setter和getter内部是线程同步的
老沙
2019-09-28
9010
浅入深出Copy和mutableCopy
由Tagged Pointed 可以知道a b 为Tagged Pointer 对象 想深入了解的的可以看一下我的上一篇文章
老沙
2019-09-28
5250
数据结构与算法(一) 简单例子理解时间复杂度和空间复杂度
所以总的时间为1 + n + n + n + n^2 + n^2 + n^2 = 1 +3n +3n^2 由于计算时间复杂度可以省略常数,系数以及低阶 所以这个算法的时间复杂度为O(n^2)
老沙
2019-09-28
4090
数据结构与算法(二)数组
在堆中连续开辟的一段空间,每个元素占有相同大小的空间。一经开辟,即固定大小,无法改变长短。
老沙
2019-09-28
3170
block内存管理
盏空间的block 不会对外面capture的变量进行强引用 无论weak修饰 还是strong修饰
老沙
2019-09-27
6890
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档