一直想要写的 二叉树 中序 先序 后序遍历算法
递归的太简单了,就不写了。关键是非递归版本。
先序:
我自己的版本:
void RootPreTraverse(Node* p)
{
Stack S;
while(S not empty)
{
p=S.top();
S.pop();
Show(p);
if(p->right!=null)
S...
分类:
其他好文 时间:
2014-06-20 10:55:49
阅读次数:
279
题目:输入一个二叉树和一个整数,打印出二叉树中所有和给定整数值相等的路径。分析:先画图明白几点:1)根据题意,我们是要遍历整个树才能确定所有符合条件的路径。显然应该从根节点出发,那么我们就应该采用先序遍历。这里遍历就采用递归更简单。2)遍历完了后如何保存路径呢?这里我们是采用vector而不是sta...
分类:
其他好文 时间:
2014-06-17 14:05:47
阅读次数:
230
回溯法是设计递归的一种常用方法,它的求解过程实质上就是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前预先建立的而是隐含在遍历过程中的。下面举一个例子:求含n个元素的集的幂集:集合A={ {1,2,3}, {1,2}, {1,3}, {1}, {2,3},{2},{3},{}}; /...
分类:
其他好文 时间:
2014-06-17 00:49:01
阅读次数:
302
二叉树的创建和四种遍历(前序、先序、后序、层次、结点的层数、深度、叶子数等)—java描述packagejavab;//树的结点类publicclassTreeNode{Stringdata;TreeNodeleftChild,rightChild,next;publicTreeNode(Strin...
分类:
编程语言 时间:
2014-06-14 13:54:02
阅读次数:
404
根据先序遍历和中序遍历的特点,我们想到了采用递归的方法来实现。思路:1)
代码的容错性检查,比如:先序遍历和中序遍历长度应相等 2)
先保存先序遍历的第一个点,这个点为结点,接下来循环中序遍历,直到midOrd[index]=该结点,那么接下来就可以采用递归,分别对结点左边和右边的序列采用相同的方法...
分类:
其他好文 时间:
2014-06-11 21:48:07
阅读次数:
358
今天数据结构的考试有这个题,做了好久,下来后,我好好地在网上查了一下,并结合我自己的理解,总结出来了一个比较好理解的方法。这个方法可以说做起这样的题又快又准。(概括为一个口诀:先序放中间,中序分两边) 基本思想就是递归:1.取出先序的第一个节点。(先序中的节点为根节点)2.用第一个节点可以将中序分....
分类:
其他好文 时间:
2014-06-11 13:11:53
阅读次数:
316
按先序遍历创建一棵树,以层次遍历输出
样例输入
A B # D # # C E # # F # #
样例输出
LevelOrder: A B C D E F
代码:
#include
#include
using namespace std;
struct node { //表示一个树上的节点
char ch;
nod...
分类:
其他好文 时间:
2014-06-10 15:58:02
阅读次数:
295
二叉链表的C语言描述基本运算的算法——建立二叉链表、先序遍历二叉树、中序遍历二叉树、后序遍历二叉树、后序遍历求二叉树深度#include#includeusing
namespace std;class Tree{private: struct Node { char da...
分类:
其他好文 时间:
2014-06-09 18:39:49
阅读次数:
310
前序和中序构建二叉树后序和中序构建二叉树二叉树遍历大总结:先序、中序、后序 、层次
(递归、非递归、Morris)
分类:
其他好文 时间:
2014-06-07 10:26:39
阅读次数:
229
typedef char status;
typedef char Telemtype;
#define NULL 0
#define OK 1
typedef struct bitnode{
Telemtype data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
Creatbitree(bitree &t)
{
//先序创建二叉...
分类:
其他好文 时间:
2014-06-03 00:47:39
阅读次数:
195