
【数据结构与算法】
circujoker_06
hello world
展开
-
【数据结构】二叉树
二叉树首先是一棵树,每个节点都不能有多于两个的儿子,也就是树的度不能超过2。二叉树的两个儿子分别称为“左儿子”和“右儿子”,次序不能颠倒。如图1是一个简单的二叉树。 二叉树的种类 一种是满二叉树,除了最后一层的叶子节点外,每一层的节点都必须有两个儿子节点。如图2是一个满二叉树。 另一种是完全二叉树,一棵二叉树去掉最后一层后剩下的节点组成的树为满二叉树,最后一层转载 2016-03-07 16:39:49 · 502 阅读 · 0 评论 -
【数据结构】二叉树2
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。转载 2016-03-07 18:26:51 · 453 阅读 · 0 评论 -
【数据结构】栈
//栈的定义 //这里存在一个问题:堆和栈的区别 //栈是一个后进先出的线性表(这里就可以知道了线性表中顺序表和链表即可以自己操作数据,同时也是其他数据结构的基础,例如栈、队列的基础) //堆栈在眼前的认知中就好比是洗盘子,队列就好比是队列,先进先出 //栈分栈顶(表尾)和栈尾(表头),栈只能在栈顶进行操作,出栈或者进栈都是在栈顶操作。这是和一般的线性表区别的地方 //既然栈作为线性表,那么其就可原创 2016-03-07 20:45:24 · 663 阅读 · 0 评论 -
【数据结构】堆
1. 概述 堆(也叫优先队列),是一棵完全二叉树,它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。 2. 堆的基本操作 堆是一棵完全二叉树,高度为O(lg n),其基本操作至多与树的高度成正比。在介绍堆的基本操作之前,先介绍几个基本术语: A:用于表示堆的数组,下标从1开始,转载 2016-03-07 21:09:42 · 322 阅读 · 0 评论 -
【数据结构与算法】哈夫曼树
1.基本概念 Huffman Tree,中文名是哈夫曼树或霍夫曼树,它是最优二叉树。 定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。 这个定义里面涉及到了几个陌生的概念,下面就是一颗哈夫曼树,我们来看图解答。 路径和路径长度 定义:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数转载 2017-03-21 12:16:15 · 1768 阅读 · 0 评论 -
【数据结构与算法】 Floyd算法
核心思想: 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入一个矩阵S,矩阵S中的元素a[i][j]表示顶点i(第i个顶点)到顶点j(第j个顶点)的距离。假设图G中顶点个数为N,则需要对矩阵S进行N次更新。 初始时,矩阵S中顶点a[i][j]的距离为顶点i到顶点j的权值;如果i和j不相邻,则a[i][j]=∞。接下来开始,对矩阵S进行N次更新。第1次更新时,如果"a[i][j转载 2017-04-05 09:20:06 · 701 阅读 · 1 评论 -
【数据结构与算法】Dijkstra算法
package com.smart.reflect; import java.io.IOException; import java.util.Scanner; public class MatrixUDG { private int mEdgNum; // 边的数量 private char[] mVexs; // 顶点集合 privat转载 2017-04-05 10:32:48 · 361 阅读 · 0 评论