数据结构与算法
文章平均质量分 79
zjc348
这个作者很懒,什么都没留下…
展开
-
递归,分治,回溯
递归模板 func recursion(level int, param1, param2,...){ //recursion terminator 递归终止条件 if level > MAX_LEVEL{ process_result return } //process logic in current level 处理当前层逻辑 process(level, data...) //drill down 下探到下一层原创 2020-08-30 22:26:41 · 265 阅读 · 0 评论 -
二叉树的前中后序遍历及N叉树的前后序遍历
leetcode原题 94. 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归比较简单,就略过了,直接上迭代代码,这里给出golang的代码 /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode *原创 2020-08-24 16:52:05 · 612 阅读 · 0 评论 -
二叉树,哈希表,堆
二叉树 简单地理解,满足以下两个条件的树就是二叉树: 本身是有序树; 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2; 例如,图 1a) 就是一棵二叉树,而图 1b) 则不是。 图 1 二叉树示意图 二叉树的性质 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i 层最多有 2i-1 个结点。 如果二叉树的深度为 K,那么此二叉树最多有 2K-1 个结点。 二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。 性质 3 的计算方法为:原创 2020-08-24 11:45:34 · 327 阅读 · 0 评论 -
常用数据结构及排序算法的复杂度分析
大O表达式 - Big O notation O(1)O(1)O(1): Constant Complexity 常量复杂度 O(logn)O(logn)O(logn): Logarithmic Complexity 对数复杂度 O(n)O(n)O(n): Linear Complexity 线性复杂度 O(n2)O(n^2)O(n2): N Square Complexity 平方 O(n3)O(n^3)O(n3): N Cubic Complexity 立方 O(2n)O(2^n)O(2n): Exp原创 2020-08-24 10:31:12 · 142 阅读 · 0 评论 -
数组,链表,跳表
1. 数组,链表,跳表 数组:在内存中开辟连续的内存地址,存储元素 链表:当前Node对象存储当前节点值与下一节点内存地址 调表:带有调表索引的链表,只能用于元素有序的情况下,用来取代平衡树二分查找 左append 右append 查询 插入 删除 数组 O(1) O(1) O(1) O(n) O(n) 普通链表 O(1) O(1) O(n) O(1) O(1) 调表 O(1) O(1) O(log n) O(log n) O(log n) 空间复杂度上,数组最少,普通链表第二原创 2020-08-24 10:29:11 · 155 阅读 · 0 评论 -
php数据结构运用(树)
树 树是一种数据结构,它是由n个有限节点组成一个具有层次关系的集合 树的特点: 每个节点有零个或多个子节点 没有父节点的节点称为根节点 每一个非根节点有且只有一个父节点 除了根节点外,每个子节点可以分为多个不相交的子树 二叉树 概念 二叉树是树的特殊一种,具有如下特点: 每个结点最多有两颗子树,结点的度最大为2 左子树和右子树是有顺序的,次序不能颠倒 即使某结点只有一个子树,也要区分左右子树 二叉树是一种有用的折中方案,既有链表的好处,也有数组的好转载 2020-07-29 21:04:06 · 626 阅读 · 0 评论