数据结构
文章平均质量分 91
北辰北
万事心态是关键
展开
-
二叉树算法
二叉树的遍历算法 1.先序遍历 对每一个节点将其看作根节点按照根左右的顺序进行遍历。 示例代码 void _PreOrderTree(Node* root) //先序遍历二叉树 { if (root != NULL) { cout _data _PreOrderTree(root->left); _PreOrderTree(r原创 2017-04-08 20:22:51 · 298 阅读 · 0 评论 -
用Huffman树实现文件压缩与解压
用Huffman树实现文件的压缩与解压 我们先来了解一下什么是Huffman树? 我们平常所使用的Zip等压缩工具都是借助Huffman树实现的,Huffman是一种特殊的二叉树,它是一种加权路径最短的二叉树, 因此也称为最优二叉树。 (下面用一幅图来说明) 它们的带权路径长度分别为:图1: WPL=3*2+4*2+2*2+10*2=48 图2: WPL=3*3+2*3+4*原创 2017-08-07 19:22:21 · 3784 阅读 · 1 评论 -
排序算法总结
在程序中当我们需要对数据进行排序时,会面临很多排序算法,这个时候对排序算法的选择多种多样。下面我们列出以下一些常用的排序算法。 常用的排序算法有: 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 希尔排序 1. 冒泡排序(Bubble Sort) 基本思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往原创 2017-08-20 19:11:51 · 431 阅读 · 0 评论 -
判断单链表是否带环,环的入口位置?
当我们做链表的编程题时,经常会遇到给定一个单链表(头结点)判断单链表知否带环等如下的问题。 1. 判断链表是否带环? 2. 环的入口位置在哪里? 3. 环的长度是多少。问题1: 首先要判断一个链表是否带环,我们可以分别考虑一下带环和不带环两种情况的区别。如果链表不带环,我们用一个指针从头遍历到尾 指针最终会指向一个NULL 。如果链表带环指针一旦进入环就会一直循环遍历,这样就会陷入原创 2017-09-01 13:40:05 · 781 阅读 · 2 评论