#define_CRT_SECURE_NO_WARNINGS1
#include<iostream>
usingnamespacestd;
enumPointerTag{THREAD,LINK};//枚举
前言:为了遍历的方便,我们在二叉树中引入前驱和后序,这样就储存了相关信息。
其结构如下:template<classT>
structBinaryTreeThdNode
{
T_data;..
分类:
其他好文 时间:
2016-04-27 07:09:56
阅读次数:
132
本文学习的是:二叉搜索(排序)树的普通操作
包括:插入,删除,查找,前序遍历,中序遍历,后序遍历,树的最大深度,最小深度,最大值,最小值和节点个数。
首先需要清楚二叉搜索树的定义:
二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、...
分类:
其他好文 时间:
2016-04-26 19:51:27
阅读次数:
142
树的定义本是递归定义,所以采用递归的方法实现遍历算法,更加让人理解,且代码简单方便。若采用非递归的方法实现,须得利用栈模拟实现。栈的特点(后进先出)非递归实现二叉树的前序遍历:原理如图所示:参考代码如下:void_PrevOrder(Node*root)//非递归实现前序遍历{ stack&..
分类:
其他好文 时间:
2016-04-23 15:04:29
阅读次数:
118
二叉树是一种常见的数据结构,这里我们需要要注意的是,二叉树的非递归的遍历。先序遍历,中序遍历,后序遍历这三种遍历,如果用非递归的方式实现,我们则需要借助栈这个结构,首先我们需要遍历所有左子树的左节点。进行压栈,完成压栈之后,根据不同的需求,判断是否该继续访..
分类:
编程语言 时间:
2016-04-23 01:49:58
阅读次数:
579
对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对
于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归..
分类:
编程语言 时间:
2016-04-22 16:46:29
阅读次数:
164
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ...
分类:
其他好文 时间:
2016-04-20 13:08:53
阅读次数:
138
二叉树是一种树形结构,它每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点)。所谓度是结点拥有的子树数。对于二叉树,它具有以下的性质:1、在二叉树的第i层上至多有2^(i-1)个结点(i>=1)。2、深度为k的二叉树至多有2^k-1个结点。3、对任何一棵二叉树,如果它的..
分类:
其他好文 时间:
2016-04-20 02:11:07
阅读次数:
267
利用随机函数产生80个(不大于200且各不相同的)随机整数,用这些整数来生成一棵二树,分别对二叉树进行先序遍历,中序遍历和后序列遍历输出树中结点元素序列。注意:先序遍历输出要求采用非递归来实现。 (2)程序实现的基本思想 1.建立合适的二叉树 程序是以 图1.1 的形式建立的。 2.前序遍历是以st ...
分类:
其他好文 时间:
2016-04-19 14:17:48
阅读次数:
369
参考《大话数据结构》P178~184——二叉树的遍历。 用书上的这个二叉树: 代码和解释如下(VS2012测试通过): 运行结果: 下图方便理解递归。但写递归代码的时候不用这么麻烦,毕竟人脑更擅长考虑递推。重点放在求解目标上,以及递归结束的条件。 ...
分类:
其他好文 时间:
2016-04-19 14:00:38
阅读次数:
205