为了防止思维僵化,每天刷个算法题。这里贴非递归二叉树遍历,包含前序、中序、后序三种。...
分类:
编程语言 时间:
2016-05-27 11:56:50
阅读次数:
154
二叉树:树的每个节点最多有两个子节点。1.实现二叉链表的结构://节点结构template<classT>structBinaryTreeNode{ BinaryTreeNode<T>*_left;//左子树 BinaryTreeNode<T>*_right;//右子树 T_data;//数据域 //构造函数 BinaryTreeNode(constT&x) :_left(..
分类:
编程语言 时间:
2016-05-26 19:09:53
阅读次数:
183
二叉树中的三种遍历方式,是我们最为熟知的,通过先序遍历+中序遍历或者是中序遍历+后序遍历都可以唯一确定一棵二叉树;但是注意,先序遍历+后序遍历不能确定一棵二叉树,但是如果一棵二叉树中只有度为0和度为2的节点,那么这种遍历方式也是可以确定一棵确定的二叉树的。先序+中序–>构造二叉树下面我们分别来看一下,根据先序+中序遍历的顺序,如何恢复一棵二叉树,代码如下://首先采用递归的方式
public Tre...
分类:
其他好文 时间:
2016-05-25 13:28:22
阅读次数:
230
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入数组的任意两个数组都互不相同。二叉搜索树的特点就是每个结点的左子树的值都比自身的值小,而右子树的值都比自身值要大。比如如上的二叉搜索树后序遍历的结果就是..
分类:
其他好文 时间:
2016-05-25 07:08:16
阅读次数:
197
题目大意 给出一棵二叉树的前序和中序遍历结果,求出后序遍历的结果。保证二叉树中节点值均不相同。 分析 通过前序和中序遍历的结果,我们可以构建出二叉树,若构建出二叉树,则后序遍历的结果很容易求出(当然递归方法很容易)。主要是二叉树的构建。 二叉树类型非常适合用递归进行求解,所以考虑通过递归的方式来建立 ...
分类:
其他好文 时间:
2016-05-19 10:24:09
阅读次数:
121
前序线索化:void_PrevOrderThreading(Node*cur,Node*&prev)
{
if(cur==NULL)
{
return;
}
if(cur->_left==NULL)
{
cur->_leftTag==THREAD;
cur->_left=prev;
}
if(prev&&prev->_right==NULL)
{
prev->_rightTag=THREAD;
prev->_right=cur;
}
pr..
分类:
其他好文 时间:
2016-05-19 06:50:27
阅读次数:
453
题目链接:http://poj.org/problem?id=1330 题意:给定一个n个节点的有根树,以及树中的两个节点u,v,求u,v的最近公共祖先。 数据范围:n [2, 10000] 思路:从树根出发进行后序深度优先遍历,设置vis数组实时记录是否已被访问。 每遍历完一棵子树r,把它并入以r ...
分类:
编程语言 时间:
2016-05-18 01:42:31
阅读次数:
242
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
输入描述
整数数组
输出描述
布尔值
题目分析什么是二叉搜索树?
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值...
分类:
其他好文 时间:
2016-05-17 11:39:23
阅读次数:
102
"遍历"是二叉树各种操作的基础,可以在遍历过程中对结点进行各种操作,如:对于一棵已知树可求结点的双亲,求结点的孩子结点,判定结点所在的层次等,反之也可在遍历二叉树的过程中生成结点,建立二叉树的存储结构 按先序序列建立二叉树的二叉链表的过程: ABC##DE#G##F###(#代表空) //中序、后序 ...
分类:
其他好文 时间:
2016-05-16 19:53:52
阅读次数:
145
已知两种遍历序列求原始二叉树 算法思想: 需要明确的前提条件 通过先序和中序可以求出原始二叉树 通过中序和后序可以求出原始二叉树 但是通过先序和后序无法还原出二叉树 换种说法: 只有通过先序中序或者后序中序才可以确定一个二叉树 先来看一个例子,已知先序遍历序列和中序遍历序列求后序遍历: 先序:ABC ...
分类:
其他好文 时间:
2016-05-16 12:48:35
阅读次数:
194