遍历二叉树是对非线性结构进行线性化操作,在得到的访问序列中,每个节点都只有一个直接前去和一个直接后继。 引入线索二叉树可以加快查找前去于后继节点的速度,实质就是将二叉链表中的空指针改为指向前驱或者后继的线索,线索话就是在遍历中修改空指针。 通常规定:对某一结点,若无左子树,将lchild指向前驱结点 ...
分类:
其他好文 时间:
2018-10-15 18:20:24
阅读次数:
200
实现对含有n个元素的单链表的逆转,要求运行时间O(n),除了链表本身所需空间外,只使用固定大小的存储空间。(此题来自《算法导论》10.2 7) 从头元素开始循环,将原本指向其后继节点的指针指向其前驱节点,直到循环至哨兵为止。整个过程额外需要三个指针变量的空间,分别保存当前节点及其前驱、后继。 下面是 ...
分类:
其他好文 时间:
2018-09-24 12:50:28
阅读次数:
172
1. 前言 Java中好多地方用到AbstractQueuedSynchronizer(PS:简称AQS),比如ReentrantLock、线程池,这部分在面试的时候也经常被问到,今天以ReentrantLock为例,通过源码来加深对AQS的理解 2. lock 通常,我们的用法是这样的: 那么lo ...
分类:
其他好文 时间:
2018-09-12 20:06:42
阅读次数:
199
1. Linklist设计要点 类模板,通过头结点访问后继节点 定义内部节点类型Node,用于描述数据域和指针域 实现线性表关键操作如增、减、查等 类模板,通过头结点访问后继节点 定义内部节点类型Node,用于描述数据域和指针域 实现线性表关键操作如增、减、查等 类模板,通过头结点访问后继节点 定义 ...
分类:
其他好文 时间:
2018-09-12 13:59:57
阅读次数:
145
1、链式存储结构线性表的实现: 设计要点:类模板 通过头结点访问后继节点 定义内部结点类型Node,用于描述数据域和指针域 实现线性表的关键操作(增、删、改、查等) 2、LinkList 具体实现 问题:头结点隐患,实现代码优化 创建 时,会调用 ,用泛指类型创建头结点的数据域,当泛指类型为用户自定 ...
分类:
其他好文 时间:
2018-08-18 13:21:20
阅读次数:
149
1、一个栏位(hashmap数组的一个位置),放置的node有这几种可能:A null;B 链表的头节点,这是的hash值和后继节点的hash值是一样的,而且和数组位置也是一一对应的,是个正数;C transfer中,会把hash值为-1的一个firstNode放在这里,标志这个位置正在被trans ...
分类:
其他好文 时间:
2018-08-17 12:10:43
阅读次数:
132
一、常见的链表 1、单链表(Singly Linked List) 构成:每个节点包含数据(data)和后继节点的地址(next) 2、双向链表 构成:每个节点包含数据(data)、前驱的地址(prev)、后继的地址(next) 优势:删除或添加元素不需要移动数据,可以双向遍历 3、异或链表(XOR ...
分类:
其他好文 时间:
2018-07-27 01:12:57
阅读次数:
177
中序遍历非递归逻辑 当前节点为空,打印,从栈中弹出,访问右子树 当前节点不空,入栈,继续访问左子树。 后续遍历非递归写法 很简单的思路。借助于两个栈的结构来实现。 中左右 > 中右左 >左右中 如何直观打印一颗二叉树?这个在调试的时候是很有用的。 一个节点的后继节点应该怎么找?是中序遍历中的后面的位 ...
分类:
其他好文 时间:
2018-07-01 17:49:23
阅读次数:
148
一、基本概念 树是一种简单的非线性结构,所有元素之间具有明显的层次特性。在树结构中,每一个结点只有一个前驱节点,称为父结点,没有前驱节点的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后继节点,称为该结点的子结点。没有后继节点的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数 ...
分类:
其他好文 时间:
2018-06-15 20:56:59
阅读次数:
179
1.若节点类型没有parent属性,采用中序遍历方式获取后继节点 2.若节点存在parent属性即 ...
分类:
编程语言 时间:
2018-06-04 11:44:15
阅读次数:
261