对于一颗二叉树,可以根据先序遍历(后序遍历)和中序遍历重新还原出二叉树。
主要通过递归实现。
关键是找出对应左右子树的长度,之后传递先序遍历的开始节点、结束节点,中序遍历的开始节点、结束节点。
代码:
#include
using namespace std;
typedef struct tree{
int data;
struct tree *lchild;
struct ...
分类:
其他好文 时间:
2014-08-05 19:27:30
阅读次数:
224
题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
比如:
上面这棵二叉树,如果寻找和为22的路径,那应该有两条,首先是10,5,7,另外一条是10,12.
思路:
可以按照先序遍历的方式访问二叉树,这样可以确保根先于子树被访问到,另外需准备一个栈...
分类:
其他好文 时间:
2014-08-04 14:28:57
阅读次数:
237
二叉树遍历是二叉树中非常基础的部分,也是学习二叉树必须熟练掌握的部分,下面我们先给出二叉树三种遍历方式的定义,并通过举例来说明二叉树遍历的过程。
二叉树的遍历分为:前序遍历(也叫先序遍历)、中序遍历、后序遍历。所谓前、中、后都是根据当前子树根结点相对左右孩子的位置而言,也就是说:...
分类:
其他好文 时间:
2014-08-01 23:13:42
阅读次数:
324
题目描述:
输入一个二叉树,输出其镜像。
九度OJ的测试很蛋疼啊~
这里,我先写一个求二叉树镜像的代码,使用自己的测试代码:
思路很简单:先判断是否左右孩子都为空,如果不是,则交换,然后递归左右子树。其实是先序遍历。
/*
二叉树镜像
by Rowandjj
2014/8/1
*/
#include
using namespace std;
typedef str...
分类:
其他好文 时间:
2014-08-01 19:47:22
阅读次数:
266
表达树就是根据后缀表达式来建立一个二叉树。
这个二叉树的每个叶子节点就是数,真祖先都是操作符。
通过栈来建立的,所以这里也会有很多栈的操作。
树的先序遍历,中序遍历,后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码。
下面是代码:
//
// main.cpp
// expressionTree
//
// Created by Alps on 14-7-29.
//...
分类:
其他好文 时间:
2014-07-30 23:57:15
阅读次数:
554
以下内容出自:> 大家在上学的时候应该都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,我们上学那会儿这一章节是必考内容,左子树,右子树,什么先序遍历后序遍历什么,重点就是二叉树的的遍历,我还记得当时老师就说,考试的时候一定有二叉树的构建和遍历,现在想起来还是觉的老师是正确的,树状结果....
分类:
其他好文 时间:
2014-07-19 20:29:30
阅读次数:
318
1.如何根据二叉树的先序遍历和中序遍历结果还原二叉树?
比如,先序遍历结果是{1,2,4,7,3,5,6,8},中序遍历结果是{4,7,2,1,5,3,8,6};
那么重建二叉树的过程如下:
1.先序遍历方式为:根->左->右.故1为根节点。中序方式为:左->根->右,所以4,7,2为左子树上的结点,5,3,8,6为右子树的结点。
2.经过步骤1,将...
分类:
其他好文 时间:
2014-07-19 18:25:16
阅读次数:
248
一、已知先序遍历和中序遍历,求后序遍历。
根据先序遍历和中序遍历还原二叉树的主要思想:
1、先序遍历序列的第一个元素必定是根节点,可以由此获取二叉树的根节点。
2、根据根节点,在中序遍历序列中查找该节点,由中序遍历的性质可知,中序遍历中该根节点左边的序列必定在根节点的左子树中,而根节点右边的序列必定在右子树中。由此可以知道先序遍历中左子树以及右子树的起止位置。
3、分别...
分类:
其他好文 时间:
2014-07-14 20:41:09
阅读次数:
212
在网上也搜了很多的例子,根据网络上的解释,慢慢摸索,用了将近2周的时间。笨人,没办法。在yii php框架下 无限级分类。通过网络上的,我们都了解到 实现文章 无限级分类,可以使用左右值编码,是通过二叉树的先序遍历 来得到 类别的,不使用递归。这种方法在 全部查询出 类别的时候,是很简单的。先看数据...
分类:
其他好文 时间:
2014-07-11 19:04:37
阅读次数:
213
1.先序遍历非递归算法
#define maxsize 100
typedef struct {
Bitree Elem[maxsize];
int top;
} SqStack;
void PreOrderUnrec(Bitree t) {
SqStack s;
StackInit(s);
p=t;
while (p!=...
分类:
其他好文 时间:
2014-07-08 17:13:18
阅读次数:
267