二叉树的前序遍历:root点先被访问,然后是left和right子节点。迭代的版本也相对好写。1、递归版本:时间复杂度O(N),空间复杂度O(N) 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int va...
分类:
其他好文 时间:
2014-07-07 20:35:24
阅读次数:
158
Problem Description:Given a binary tree, flatten it to a linked list in-place.Solution:对二叉树进行前序遍历(pre-order). 1 public void flatten(TreeNode root) { 2...
分类:
其他好文 时间:
2014-07-07 18:47:24
阅读次数:
306
按照前序遍历的顺序把树用right连起来。本来想了半天,一点思路都没有,总觉得Inplace的解法一般都非常巧妙。后来我突发灵感,决定用一个变量记录当前访问到哪个点,真是太机智了~~ 1 /** 2 * Definition for binary tree 3 * struct TreeNode.....
分类:
其他好文 时间:
2014-07-06 14:02:26
阅读次数:
168
判断一颗树是不是二分查找树,非常经典基础的一个算法。我很久之前第一次做的时候,是先求出来了树的前序遍历的结果,然后判断这个数组排序后是否和排序前相同,还要判断重复虾米的,很纠结的一种做法。后来思考了一下怎么用递归的思路做,觉得应该根据定义返回两个子树的最大值和最小值,写了一会代码,发现好麻烦,不太对...
分类:
其他好文 时间:
2014-07-06 13:14:30
阅读次数:
178
一道和Leetcode的一道题目基本上一样的题目。
给出前序遍历和中序遍历序列,要求根据这些信息恢复一颗二叉树的原貌,然后按后序遍历序列输出。
Leetcode上有给出后序和中序,恢复二叉树的。
不过其实算法都是一样的。仿佛又回到了做Leetcode题的那段岁月中了。
#include
#include
#include
using std::string;
const int...
分类:
其他好文 时间:
2014-07-06 12:24:42
阅读次数:
129
给出按最底层叶子节点到根节点的数据,然后要求重建树,前序输出最终建的树。
都是两个基本操作解决:
1 二叉树插入操作
2 前序遍历
简单题目了。
#include
#include
#include
#include
using std::vector;
using std::string;
const int MAX_B = 1024;
char buf[MAX_B...
分类:
其他好文 时间:
2014-07-06 09:54:52
阅读次数:
239
二叉树遍历 答题时间: 00 小时 03 分 11 秒 描述:二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后...
分类:
其他好文 时间:
2014-07-02 17:40:45
阅读次数:
210
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。...
分类:
其他好文 时间:
2014-07-02 08:58:17
阅读次数:
198
本文部分来源于CSDN兰亭风雨大牛的原创。链接为http://blog.csdn.net/ns_code/article/details/12977901二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此...
分类:
其他好文 时间:
2014-06-25 12:33:46
阅读次数:
327
这里给出二叉树三种遍历方式的迭代实现代码。二叉树的递归实现使用系统栈入栈出栈,而非递归的迭代实现方法就是手动维护一个栈,来模拟递归的入栈出栈过程。 本文没有给出用户栈的代码,如果需要结合上篇的测试代码一起测试,则需要自己实现自己的栈,以及基本的pop、push等栈操作函数。 前序迭代遍历: ...
分类:
其他好文 时间:
2014-06-21 08:19:15
阅读次数:
211