树的递归定义
树是n(n>0)个结点的有限集,这个集合满足以下条件:
⑴有且仅有一个结点没有前驱(父亲结点),该结点称为树的根;
⑵除根外,其余的每个结点都有且仅有一个前驱;
⑶除根外,每一个结点都通过唯一的路径连到根上(否则有环)。这条路径由根开始,而未端就在该结点上,且除根以外,路径上的每一个结点都是前一个结点的后继(儿子结点);
由上述定义可知,...
分类:
其他好文 时间:
2015-07-21 14:58:12
阅读次数:
114
样例题目来自LintCode, 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2
/ 1 3代码实现/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int va...
分类:
其他好文 时间:
2015-07-11 18:39:04
阅读次数:
137
对于一颗二叉树,可以根据先序遍历(或者后序遍历)和中序遍历(树中不含重复的数字)重新还原出二叉树。
解析:
1. 先序遍历序列的第一个元素必定是根节点,可以由此获取二叉树的根节点。
2. 根据根节点,在中序遍历序列中查找该节点,由中序遍历的性质可知,中序遍历中该根节点左边的序列必定在根节点的左子树中,而根节点右边的序列必定在右子树中。由此可以知道先序遍历中左子树以及右子树的起止位置。
3. 找到了左右子树前序遍历和中序遍历再用同样的方法分别构建左右子树,典型的递归思想。...
分类:
其他好文 时间:
2015-07-09 18:00:45
阅读次数:
345
样例
给出中序遍历:[1,2,3]和前序遍历:[2,1,3].
返回如下的树:
2
/ 1
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* ...
分类:
其他好文 时间:
2015-06-14 16:41:30
阅读次数:
123
树结构练习——排序二叉树的中序遍历Time Limit: 1000MS Memory limit: 65536K题目描述在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3)....
分类:
编程语言 时间:
2014-11-25 10:39:55
阅读次数:
245
树结构练习——排序二叉树的中序遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。...
分类:
编程语言 时间:
2014-11-15 08:55:39
阅读次数:
273