前面我们说了二叉树前序中序后序遍历的递归非递归算法的实现,下面我们再来说说二叉搜索树~
二叉排序树分为静态查找(find)和动态查找(insert、delete)
二叉搜索树:一棵二叉树,可以为空;如果不为空,满足下列性质:
1.非空左子树的所有键值小于其根结点的键值。
2.非空右子树的所有键值大于其根结点的键值
3.左右子树都是二叉搜索树!!
...
分类:
编程语言 时间:
2015-02-11 09:24:00
阅读次数:
355
算法设计与分析基础(第3版)
p16 in-place翻译为‘在位’?‘就地’更合适点p38 amortized应翻译为‘均摊’,‘摊销’这个词简直莫名其妙(可能因为翻译是做算法交易导致的?)p64 迭代优于递归(迭代始终是增量式的,而递归就没办法增量了,除非能够dump整个运行时栈)p73 通过算法可视化得到一个更好的非递归算法(人的图像认知直觉思维?)p79 验证一个拓扑...
分类:
编程语言 时间:
2015-02-02 12:35:58
阅读次数:
239
二叉树的非递归遍历:
中序遍历非递归遍历算法
非递归算法实现的基本思路:使用堆栈:...
分类:
其他好文 时间:
2015-01-18 13:13:54
阅读次数:
189
二叉树的遍历方式基本就是前序遍历,中序遍历,后序遍历和层次遍历。从代码的角度来说,前三种最简单的就是用递归了,代码会非常简洁。但是递归有一个缺陷,就是当二叉树的节点非常多的时候,层次深的递归会不停的进行程序的压栈和出栈操作,效率比较低。这里就不写递归算法了,只写四种遍历的非递归算法。
先定义二叉树的节点如下:
/**
* Definition for binary tree
* pub...
分类:
编程语言 时间:
2014-12-15 13:47:08
阅读次数:
305
1、二叉树定义:
typedef struct BTreeNodeElement_t_ {
void *data;
} BTreeNodeElement_t;
typedef struct BTreeNode_t_ {
BTreeNodeElement_t *m_pElemt;
struct BTreeNode_t_ *m_pLeft;
struct B...
分类:
编程语言 时间:
2014-12-15 13:45:29
阅读次数:
223
二叉树的前序建立递归算法以及前中后序遍历的递归算法已经是人尽皆知了,递归算法也确实为代码的编写带来了很大的方便。然而,有时我们也确实需要它们的非递归算法。将递归算法转化为非递归算法可以帮助我们深入了解函数的调用与栈的原理。这里总结一下二叉树的这些重要的非递归算法。...
分类:
编程语言 时间:
2014-12-07 12:39:23
阅读次数:
210
汉诺塔问题博大精深,我稍微搜集整理了一下,就得到如此多方法,还有好些方法一时不能理解,没有贴出来,请广大网友共同探讨,分享更多更好的方法。...
分类:
编程语言 时间:
2014-11-30 16:57:24
阅读次数:
332
在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。
求割点与桥的算法是R.Tarjan发明的,本文用邻接矩阵存储图的信息,实现了递归和非递归两种算法。 感觉非递归算法或许有更好的表达,但一时想不出来,请大牛指点,谢谢!...
分类:
其他好文 时间:
2014-11-21 23:22:51
阅读次数:
408
二叉树的递归和非递归算法: (做这个的时候,总是逻辑跟不上,会搞混,做的时候发现自己对结构体指针的使用有些糊涂。)代码如下:#include #include #define Max 100typedef struct Node{ char Date; struct Node *Lchild; //...
分类:
其他好文 时间:
2014-11-19 20:11:05
阅读次数:
188
列举了深度优先搜索的递归和非递归算法,Dijkstra最短路径算法,
基于Bellman-Fort最短路径算法的改进型广度优先搜索算法,
Floyd-Warshall最短路径算法的原始版和变化版
本文是阅读《啊哈!算法》后的学习笔记,代码与教材中有些差异,若有错误请指正,谢谢!...
分类:
编程语言 时间:
2014-11-13 22:31:20
阅读次数:
277