算法导论14:树形数据结构——二叉树 2016.1.14

从上一篇开始应该就能感受到,其实既然环形的数据结构可以做出来,各种形状的数据结构都可以做出来,只要设计好节点的属性和节点之间的关系就行了。

用指针的实现会更加好理解,但是编程复杂度会相对更高,用数组实现,编程复杂度相对低,但是相对不那么直观。所以两种方式灵活选择吧。(不过用c++很多内置对象就可以解决很多问题)

……待更新

时间: 2024-10-14 07:21:39

算法导论14:树形数据结构——二叉树 2016.1.14的相关文章

算法导论8:数据结构——栈 2016.1.8

栈在暑假的时候接触过了,当时还写了个计算器,用的中缀表达式后缀表达式的栈操作. http://www.cnblogs.com/itlqs/p/4749998.html 今天按照算法导论上的讲解规范了一下代码.主要是栈的初始化.判断空栈.入栈.出栈.遍历栈. #include<stdio.h> #define MAXTOP 10 struct _stack { int top; int num[MAXTOP+1]; }s; void init(struct _stack &S) { S.

【算法导论学习-24】二叉树专题2:二叉搜索树(Binary Search Tree,BST)

一.   二叉搜索树(Binary SearchTree,BST) 对应<算法导论>第12章.相比一般二叉树,BST满足唯一的条件:任意节点的key>左孩子的key,同时<右孩子的key. 1.     节点类: public class BinarySearchTreesNode<T> { private int key; private T satelliteData; private BinarySearchTreesNode<T> parent, l

【算法导论学习-26】 二叉树专题4:红黑树、AVL树、B-Tree

1.   红黑树(Red-Black Trees) 参考<算法导论>P308页,红黑树是一种对树的高度要求最灵活的准平衡二叉搜索树.五大属性: 1: Every node is either RED or BLACK. 2: The root is black. 3: Every leaf(NIL) is black.  (The NIL is the sentinel.) 4: If a node is RED, then both its children areblack. 5: For

【算法导论学习-25】 二叉树专题3:Treaps

参考1:算法导论333页 一.Treaps介绍 参考2: http://www.cnblogs.com/huangxincheng/archive/2012/07/30/2614484.html 1.   为什么要用Treaps 1) Treap简明易懂.Treap只有两种调整方式,左旋和右旋.而且即使没有严密的数学证明和分析,Treap的构造方法啊,平衡原理也是不难理解的.只要能够理解 BST和堆的思想,理解Treap当然不在话下. 2) Treap易于编写.Treap只需维护一个满足堆序的修

算法导论13:双向循环链表 2016.1.13

今天这个又打了很长时间,本来觉得数据结构就是那样,不过是一种思维,但是实际上真正自己打和想象中差距还是很大,需要考虑到各种细节. 今天这个问题有一个比较有意思的应用,就是“约瑟夫环问题”. 具体可以参见百度百科: http://baike.baidu.com/link?url=poA1Aanlptc6yzP1puYhSw_0RQjRAplhPfHwk6eoiqMNxw6WigCEbexxZ8a9SUbrMGokpPbKNzVYw308xjeEw_ 读完问题就可以发现,这个问题用链表就是一个很完美

【算法导论学习-30】 二叉树专题5:二叉树类型的判断

一.完全二叉树的判断 参考:http://blog.csdn.net/lilypp/article/details/6158699/ [分析]根节点开始进行层次遍历,节点入队列,如果队列不为空,循环.遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树. /*使用LinkedList实现队列,入队使用queue.offer(),出队使用queue.poll()*/ Queue<BinaryTreeNode<T>> queue=

算法导论第十章数据结构--双向链表

看的概念挺朦胧的,没有明确好双链表到底需要哪些方法,其实针对这种结构应该可以写很多方法,并没有什么特定标准. 不过真是只看不练不行啊,一下手各种错误,各种溢出 #include<iostream> using namespace std; template<class T> struct Node { T value; Node<T>* pre; Node<T>* next; }; template<class T> class Flist {

算法导论.pdf

下载地址:网盘下载 内容简介  · · · · · · 在有关算法的书中,有一些叙述非常严谨,但不够全面:另一些涉及了大量的题材,但又缺乏严谨性.本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受.全书各章自成体系,可以作为独立的学习单元:算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂:说明和解释力求浅显易懂,不失深度和数学严谨性. 全书选材经典.内容丰富.结构合理.逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教

基本数据结构(算法导论)与python

原文链接 Stack, Queue Stack是后进先出, LIFO, 队列为先进先出, FIFO在Python中两者, 都可以简单的用list实现,进, 用append()出, Stack用pop(), Queue用pop(0), pop的时候注意判断len(l) 对于优先队列, 要用到前面讲到的堆 链表和多重数组 这些数据结构在python中就没有存在的价值, 用list都能轻松实现 散列表 为了满足实时查询的需求而产生的数据结构, 查询复杂度的期望是O(1), 最差为O(n)问题描述, 对