二叉树是最常见最重要的数据结构之一,它的定义如下: 二叉树(binary tree)是有限多个节点的集合,这个结合或者是空集,或者由一个根节点和两颗互不相交的、分别称为左子树和右子树的二叉树组成。 二叉树最基本的操作是遍历:一般约定遍历时左节点优先于右节点,这样根据根节点的遍历顺序可分为三种...
分类:
其他好文 时间:
2014-06-28 23:50:46
阅读次数:
631
这里给出二叉树三种遍历方式的迭代实现代码。二叉树的递归实现使用系统栈入栈出栈,而非递归的迭代实现方法就是手动维护一个栈,来模拟递归的入栈出栈过程。 本文没有给出用户栈的代码,如果需要结合上篇的测试代码一起测试,则需要自己实现自己的栈,以及基本的pop、push等栈操作函数。 前序迭代遍历: ...
分类:
其他好文 时间:
2014-06-21 08:19:15
阅读次数:
211
简单来说,就是二叉树的前序、中序、后序遍历,包括了递归和非递归的方法前序遍历(注释中的为递归版本): 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 struct TreeNode 9 {1...
分类:
其他好文 时间:
2014-06-17 12:53:42
阅读次数:
416
假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,求前序遍历。
整体思路是这样的,由后序遍历找到每个节点,然后由中序遍历判断左右子树,将整个二叉树还原后写出前序遍历。
后序遍历的顺序知道,最后一个A是二叉树的根节点,
然后把中序遍历从A分成两段,A左边的是左子树,A右边的是右子树,
结果如下
...
分类:
其他好文 时间:
2014-06-15 17:19:24
阅读次数:
251
又是一题快速排序的题目,活用快排求某个位置的数。
这次完善一下自己的基础,把快排代码规范化和增加一个random算法,进一步确保不会出现最坏情况。
思路和前一道题差不多,不过是求第k个数了,这里的第k个数是中序数。
花了点时候整理下代码,果然变得十分工整了。
#include
#include
#include
#include
using namespace std;
const...
分类:
其他好文 时间:
2014-06-15 16:21:17
阅读次数:
214
在.net3.0中序列化数据只需引用System.Web.Extensions.dll,
命名空间里引用了System.Web.Script.SerializationJavaScriptSerializer jss = new
JavaScriptSerializer();jss.Serializ...
分类:
Web程序 时间:
2014-06-12 08:56:37
阅读次数:
244
问题:
给定的二叉查找树中,有两个节点不小心被调换了位置,现在需要将其修正,不改变树的结构。
分析:
二叉排序树的中序遍历是有序的,所以这个问题又是建立在中序遍历模板上的问题,所以我们可以对其进行中序遍历,并用一个pre指针指向当前遍历结果中的最后一个结点,即下次遍历前的前一个结点。然后就可以通过将当前结点与pre结点进行比较,来判断是否有序了。若乱序,就将这两个结点都放入到预先定义的容器中...
分类:
其他好文 时间:
2014-06-10 10:54:41
阅读次数:
153
1.系统说明输入一个正整数N,然后随机产生N个整数,创建一个二叉树(左子树≤父节点≤右子树)。使用Windows程序设计,在窗体的客户区自动地画出创建二叉树的过程,并动画演示中序遍历。2.系统要求自动计算每个节点的坐标,节点圆的半径可设置,节点间的距离可设置,左右子树的角度可设置;二叉树的大小可能超...
分类:
其他好文 时间:
2014-06-09 19:54:55
阅读次数:
208
二叉链表的C语言描述基本运算的算法——建立二叉链表、先序遍历二叉树、中序遍历二叉树、后序遍历二叉树、后序遍历求二叉树深度#include#includeusing
namespace std;class Tree{private: struct Node { char da...
分类:
其他好文 时间:
2014-06-09 18:39:49
阅读次数:
310