数据结构
文章平均质量分 97
Haskei
这个作者很懒,什么都没留下…
展开
-
数据结构各种树总结
1. 二叉树(1)定义每个节点最多只有两个子节点,没有子节点的节点称之为叶子节点,第一个节点为根节点。(2)二叉树的性质我们将节点用数组的形式进行保存,比如是tree, tree[0]就代表根节点。假设父节点是tree[n],左节点为tree[n*2+1], 右节点为tree[n*2+2]。(3)二叉树的各种基本操作二叉树的创建,先序遍历,中序遍历,后序遍历from typing import Listclass TreeNode: def __init__(.原创 2020-06-19 10:03:39 · 1033 阅读 · 0 评论 -
排序算法总结 (Python)
以下所有的排序均按照从小到达排序,用python实现排序算法的稳定性指的是比如有两个相等的数字5,排序后第一个5永远会在第二个5的前面,这两个数字的相对位置不会发生变化。1. 冒泡排序 (Bubble Sort) 稳定的从数组的第一个数字开始往后遍历,比较相邻的两个数字,如果前面的数组大于后面的数字,交换两个数字的位置,一直到倒数第二个数字,因为最后一个数字没必要再去比较了,它后面没有要比较的数字了,此时第一遍遍历完成。然后开始第二遍,同样重复上述操作,但是这次是一直比较到倒数第三个数字,因为.原创 2020-06-16 07:00:39 · 334 阅读 · 0 评论 -
堆--优先队列 (Python)最大堆,最小堆 create, pop, push
1.完全二叉树的一个父节点编号为k,那么他的左二子的编号为2*k,右二子节点的编号为2*k+12.如果已知儿子(左儿子或者右儿子)的编号为x,那么他的父节点的编号为x/2(取整除,就是计算机里的/)3.一棵完全二叉树的高度为logN,即最多有logN层节点4.最小堆是所有的父节点都比他的子节点小,最大堆是所有的父节点都比他的子节点大5.像这样支持插入元素和寻找元素(最大值和原创 2016-11-09 23:50:45 · 873 阅读 · 0 评论 -
208. Implement Trie (Prefix Tree) 创建字典树
208.Implement Trie (Prefix Tree)MediumImplement a trie withinsert,search, andstartsWithmethods.Example:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // returns truetrie.search("app"); // returns falsetrie.starts...原创 2020-06-04 12:45:36 · 130 阅读 · 0 评论 -
平衡二叉树
转自yongli1992树旋转是在二叉树中的一种子树调整操作, 每一次旋转并不影响对该二叉树进行中序遍历的结果. 树旋转通常应用于需要调整树的局部平衡性的场合. 树旋转包括两个不同的方式, 分别是左旋转和右旋转. 两种旋转呈镜像, 而且互为逆操作. 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转原创 2017-01-03 11:52:35 · 309 阅读 · 0 评论 -
关键路径 + 拓扑排序
下面关于关键路径的解读分别摘自pigli博客和navorse,我觉得这两者结合起来看,效果会更好,因为两者讲的有的地方详细,有的地方不详细,这样两者结合,就基本全讲详细了关键路径的算法是建立在拓扑排序的基础之上的,这个算法中用到了拓扑排序,所以在这里先以拓扑排序开篇。1. 什么是拓扑排序?举个例子先:一个软件专业的学生学习一系列的课程,其中一些课程必须再学完它的基础原创 2016-12-19 21:54:59 · 13551 阅读 · 1 评论