根据后中序序列生成二叉树:从后序序列中找到二叉树(或者子树)的根结点,然后在中序序列找到该根结点,根结点将中序序列分成左右两部分,左边为左子树,右边为右子树。根据中序序列确定左子树的长度,确定左子树中最右下根结点在后序序列中的位置,从而可以确定左右子树在后中序序列中的范围,然后递归的生成左右子树。...
分类:
其他好文 时间:
2014-10-03 12:59:34
阅读次数:
192
自己写的#includebool check(int a[],int start,int end);void main(){// int a[]={5,7,6,9,11,10,8}; int a[]={7,4,6,5}; int len=sizeof(a)/sizeof(int); if(check...
分类:
其他好文 时间:
2014-10-02 18:33:23
阅读次数:
130
首先明白两个概念:
1. 深度遍历包括前中后序遍历三种;
2. 广度优先遍历就是层次遍历。
PS:
前中后序遍历,如果使用递归遍历,都很简单易理解;
如果使用非递归方式,首先想到的就应该是使用栈结构来控制整个过程,因为递归也是利用栈来实现的;
前中后序遍历的非递归方式中,后序遍历的非递归方式相比较而言,略复杂。...
分类:
其他好文 时间:
2014-10-02 12:39:03
阅读次数:
301
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三...
分类:
其他好文 时间:
2014-09-27 20:33:10
阅读次数:
174
比如给出数组[5,7,6,9,11,10,8]判断其是否为二叉排序树的后序遍历结果,也就是能不能画出一个二叉排序树使其的后序遍历结果与这个数组相同,若可以返回true,不可以返回false。代码:int is_valid(int *data, int n){ if(data==NULL)ret...
分类:
其他好文 时间:
2014-09-27 12:39:59
阅读次数:
129
最近使用了二叉树,除了想起能用递归遍历外,其它的方式却想不通。痛恨自己对事情一知半解,查阅资料,总结一下,方便理解。一、各遍历顺序: 先序遍历:根->左子树->右子树 中序遍历:左子树->根->右子树 后序遍历: 左子树->右子树->根二、代码实现 1 #include 2 #inc...
分类:
其他好文 时间:
2014-09-26 00:01:08
阅读次数:
200
这里实现了二叉树的先序遍历、中序遍历、后序遍历的递归和非递归两种形式的遍历以及对二叉树的层次遍历。
很基础,适合数据结构初学者参考。...
分类:
其他好文 时间:
2014-09-25 17:21:49
阅读次数:
223
题意 给你一个树的中序遍历和后序遍历 某个节点的权值为从根节点到该节点所经过节点的和 求权值最小的叶节点的值 如果存在多个 输出值最小的那个
把树建好就好说了 递归递归dfs msun保存最小叶节点权值 ans保存答案...
分类:
其他好文 时间:
2014-09-24 00:46:05
阅读次数:
230
http://acm.hdu.edu.cn/showproblem.php?pid=1710已知先序和中序遍历,求后序遍历二叉树。思路:先递归建树的过程,后后序遍历。Binary Tree TraversalsTime Limit: 1000/1000 MS (Java/Others)Memory ...
分类:
其他好文 时间:
2014-09-23 22:38:55
阅读次数:
237
程序来自Program Creek前Preorder binary tree traversal is a classic interview problem about trees. The key to solve this problem is to understand the follow...
分类:
编程语言 时间:
2014-09-23 22:37:05
阅读次数:
337