File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- # 哈希表、映射、集合的实现与特性
2- ## Hash table
1+ # 第二周学习笔记
2+ ## 哈希表、映射、集合的实现与特性
3+ ### Hash table
34* 定义
45 * 哈希表也叫散列表,是根据关键码值(key value)而直接进行访问的数据结构。
56 * 通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(Hash Function),存放记录的数组叫哈希表(或散列表)
89 * 解决方法:拉链式解决冲突法
910* 工程实践
1011 * 缓存(LRU Cache)
11- * 键值对存储(Redis)
12+ * 键值对存储(Redis)
13+
14+ ## 树、二叉树、二叉搜索树的实现和特性
15+ ### 树 Tree
16+ > LinkedList是特殊话的tree
17+ > Tree是特殊化的Graph
18+ * 代码实现
19+ ```
20+ class TreeNode {
21+ contructor(val) {
22+ this.val = val
23+ this.left = null
24+ this.right = null
25+ }
26+ }
27+ ```
28+
29+ * 二叉树的遍历
30+ 1 . 前序(Pre-order): 根-左-右
31+ 2 . 中序(In-order): 左-根-右
32+ 3 . 后序(Post-order): 左-右-根
33+
34+ ### 二叉搜索树 Binary Search Tree
35+ * 定义
36+ 二叉搜索树,也称二叉排序树、有序二叉树(Order Binary Tree)、排序二叉树(Sorted Binary Tree),是指一颗空树或者具有下列性质的二叉树:
37+ 1 . 左子树上** 所有节点** 的值均小于他的根节点的值
38+ 2 . 右子树上** 所有节点** 的值均大于他的根节点的值
39+ 3 . 以此类推:左右子树也分别为二叉查找树(重复性)
40+ * 中序遍历:生序遍历*
41+
42+ * 常见操作
43+ 1 . 查询:O(logn)
44+ 2 . 插入新节点: O(logn)
45+ 3 . 删除: O (logn)
46+
47+ * 遍历
48+ ```
49+ // 前序遍历
50+ let preOrderTraverse = (node, cb) {
51+ if (node) {
52+ cb(node.val)
53+ preOrderTraverse(node.left, cb)
54+ preOrderTraverse(node.right, cb)
55+
56+ }
57+ }
58+ // 中序遍历
59+ let inOrderTraverse = (node, cb) {
60+ if (node) {
61+ inOrderTraverse(node.left, cb)
62+ cb(node.val)
63+ inOrderTraverse(node.right, cb)
64+ }
65+ }
66+ // 后序遍历
67+ let postOrderTraverse = (node, cb) {
68+ if (node) {
69+ postOrderTraverse(node.left, cb)
70+ postOrderTraverse(node.right, cb)
71+ cb(node.val)
72+ }
73+ }
74+ ```
Original file line number Diff line number Diff line change 1+ /**
2+ * 普通递归
3+ * Definition for a binary tree node.
4+ * function TreeNode(val) {
5+ * this.val = val;
6+ * this.left = this.right = null;
7+ * }
8+ */
9+ /**
10+ * @param {TreeNode } root
11+ * @return {number[] }
12+ */
13+ var inorderTraversal = function ( root ) {
14+ var nums = [ ]
15+ let traversal = ( node ) => {
16+ if ( node ) {
17+ traversal ( node . left )
18+ nums . push ( node . val ) ;
19+ traversal ( node . right )
20+ }
21+ }
22+ traversal ( root )
23+ return nums
24+ } ;
You can’t perform that action at this time.
0 commit comments