前面我们说了二叉树前序中序后序遍历的递归非递归算法的实现,下面我们再来说说二叉搜索树~
二叉排序树分为静态查找(find)和动态查找(insert、delete)
二叉搜索树:一棵二叉树,可以为空;如果不为空,满足下列性质:
1.非空左子树的所有键值小于其根结点的键值。
2.非空右子树的所有键值大于其根结点的键值
3.左右子树都是二叉搜索树!!
...
分类:
编程语言 时间:
2015-02-11 09:24:00
阅读次数:
355
题目:在线性时间内非递归的求数组的最大连续子数组(连续和最大的子数组)。思路:设最大子数组的和为max,起点和终点位置为s、e,正在扫描的子数组的和为add,起点和终点位置为i、j。max的初始值为-∞。 1.若数组的值全为负,则返回最大值。 2.逐个扫描数组元素,更新add、i、j的值...
分类:
编程语言 时间:
2015-02-10 14:52:28
阅读次数:
204
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在...
分类:
其他好文 时间:
2015-02-09 15:47:49
阅读次数:
198
史上最简明易懂非递归遍历二叉树算法巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo)遍历二叉树的递归函数是体现了算法之美的高妙算法,思路清晰,代码简洁,读之赏心悦目。代码例如以下:程序代码:voidPreOrderTraverse_R(BiTree B...
分类:
编程语言 时间:
2015-02-07 21:31:25
阅读次数:
309
二分查找可以说是在经典不过的查找算法了,比如JAVA的库函数里,就有相应的代码实例。如下写出两个版本的二分查找,非递归和递归的
非递归的
public int binarySearch1(int[] a, int key) {
int low = 0;
int high = a.length-1;
int mid;
while (low <= high) {
mid = ...
分类:
其他好文 时间:
2015-02-06 18:55:18
阅读次数:
163
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
2
/
3
return [1,3,2].
解题思路:简单的中序非递归遍历,用栈实现;
#i...
分类:
其他好文 时间:
2015-02-06 13:12:19
阅读次数:
107
如果直接利用二叉树的层序是没有办法构建一个二叉树的,但是如果是完全二叉树应该是可以的
这里层序序列中用-1表示当前节点没有值
构建主要采用了非递归的方法,利用了queue,因为层序的遍历可以通过queue来实现那么自然也可以通过这个方法进行构建
#include
#include
#include
using namespace std;
typedef struct T...
分类:
其他好文 时间:
2015-02-04 16:38:19
阅读次数:
166
包含了所有的非递归和递归的算法:
#include
#include
#include
using namespace std;
//二叉树结点的描述
typedef struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild; //左右孩子
}BiTNode,*BiTree;
...
分类:
编程语言 时间:
2015-02-03 21:23:01
阅读次数:
261
【先序遍历】【中序遍历】中序遍历非递归遍历算法:遇到一个结点,就把它压栈,并去遍历它的左子树;当左子树遍历结束后,从栈顶弹出这个结点并访问它;然后按其右指针再去中序遍历该结点的右子树;【后续遍历】【层序遍历】
分类:
其他好文 时间:
2015-02-03 12:30:14
阅读次数:
173
找了下先序遍历二叉树C# 实现貌似没有 顺手些了一个大致思路是:传入根节点,然后依次循环其子节点推入到栈中,当推入的节点没有子节点的时候(叶子)或者所有子节点均已经遍历过后(上一次遍历的节点是该节点的右子节点),再依次退出栈。 1 using System; 2 using System.Col.....