昨天写了个二叉树遍历,自以为对二叉树很了解了。自大的认为线索二叉树不过是加了点线索而已,不足挂齿。可是当真的自己编程序写的时候才发现完全不是那么容易。在有线索的情况下,如何判别Link类型的下一节点,如何不用栈跳过已访问节点搞得脑子晕晕的。
折腾一个晚上,才根据书上把线索二叉树的建立、中序遍历给写出...
分类:
其他好文 时间:
2014-05-19 19:30:19
阅读次数:
210
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。输入:输入可能包含多个测试样例,对于每...
分类:
其他好文 时间:
2014-05-19 19:05:49
阅读次数:
269
题目描述
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
输入
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
输出
输出该二叉树的后序遍历序列。
示例输入
ABDCEF
BDAECF
示例输出
DBEFCA#include
#include
#define MAX 50+3
using namespace std;
typede...
分类:
其他好文 时间:
2014-05-18 15:59:41
阅读次数:
185
对于本题,想到一个中序遍历后,判别是否为回文串的方法,却WA多次
class Solution {
public:
vector vectorValue;
void inOrder(TreeNode* root)
{
if(root!=NULL)
{
inOrder(root->left);...
分类:
其他好文 时间:
2014-05-18 06:38:58
阅读次数:
294
先序遍历和中序遍历非递归代码:#include #include using
namespace std;typedef struct BinaryTree { int data; struct BinaryTree *rchild,
*lchild;}BinaryTree;int cr...
分类:
其他好文 时间:
2014-05-17 21:56:50
阅读次数:
264
题意:中序遍历
思路:采用递归实现。因为函数声明是返回一个vector,所以每个子树返回的是该子树的中序遍历的结果
按照 左、根、右的次序把根和左右子树的vector合并起来就可以了...
分类:
其他好文 时间:
2014-05-15 06:21:09
阅读次数:
255
原题地址:http://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/题意:根据二叉树的先序遍历和中序遍历恢复二叉树。解题思路:可以参照http://www.cnblogs.com...
分类:
编程语言 时间:
2014-05-12 14:24:57
阅读次数:
324
原题地址:http://oj.leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/题意:根据二叉树的中序遍历和后序遍历恢复二叉树。解题思路:看到树首先想到要用递归来解题。以这道题为例:如果一...
分类:
编程语言 时间:
2014-05-12 14:09:28
阅读次数:
321
原题地址:http://oj.leetcode.com/problems/binary-tree-inorder-traversal/题意:二叉树的中序遍历。解题思路:这道题用递归解不难,所以应该考察的是非递归求解二叉树的中序遍历。我们使用一个栈来解决问题。比如一颗二叉树为{1,2,3,4,5,6,...
分类:
编程语言 时间:
2014-05-12 12:48:36
阅读次数:
316
递归实现当然太简单,也用不着为了ac走这种捷径吧。。非递归实现还挺有意思的。
树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来。对于中序遍历,先要访问最左下的节点,一定是进入循环后,不断的往左下走,走到不能走为止,这时候,可以从栈中弹出访问的节点,相当于“左根右”过程的“根”,然后应该怎么做呢?想一下中序遍历完根节点之后应该干嘛,对,是走到右子树中继续重复这个过程,但是有一点,...
分类:
其他好文 时间:
2014-05-09 14:57:08
阅读次数:
211