题目一:Populating
Next Right Pointers in Each Node
Given a binary tree
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
Popul...
分类:
其他好文 时间:
2014-08-12 09:03:43
阅读次数:
201
思路:先序的第一个元素和后序的最后一个元素是当前子树的根,然后遍历中序序列,找到左右子树的分界线,递归建左子树和右子树。
class Solution {
public:
/*由于是oj,这里假设给的序列是合法的,正常情况是需要判断不合法情况的 */
TreeNode *buildTree(vector &inorder, vector &postorder,int instar...
分类:
其他好文 时间:
2014-08-11 21:37:42
阅读次数:
504
给出借助栈数据结构,遍历二叉树的非递归方法。文中以中序遍历为例子,但前序遍历和后序遍历,只需要对循环中三个代码块做一些顺序上的调整,即可得到。
分类:
其他好文 时间:
2014-08-09 18:37:58
阅读次数:
276
题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
运用队列,按层遍历,每次遍历一层时,添加新指针,由于每个节点只需要进队一次出队一次,时间复杂度为O(n),空间复杂度为O(n),具体代码如下:
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-06 19:10:42
阅读次数:
184
先说说二叉树的存储结构,跟很多其它模型一样,也有顺序和链式两种方式。前者虽然使用简单,但是存在浪费空间的问题,举个例子,下图的二叉树,用顺序的方式存储(0表示空,没有子树)是:
二叉树就是每个结点最多有两个子树的树形存储结构。先上图,方便后面分析。...
分类:
其他好文 时间:
2014-08-05 22:41:40
阅读次数:
237
题目大意:
给定一颗满二叉树的后序遍历,小写字母表示叶子节点,以从下到上,从右到左的顺序输出这棵树。
解题思路:
用堆栈构建二叉树,再用bfs遍历树,用堆栈逆序输出。
注意:构树时,若节点用malloc动态分配会超时。...
分类:
其他好文 时间:
2014-08-03 18:13:15
阅读次数:
277
二叉树遍历是二叉树中非常基础的部分,也是学习二叉树必须熟练掌握的部分,下面我们先给出二叉树三种遍历方式的定义,并通过举例来说明二叉树遍历的过程。
二叉树的遍历分为:前序遍历(也叫先序遍历)、中序遍历、后序遍历。所谓前、中、后都是根据当前子树根结点相对左右孩子的位置而言,也就是说:...
分类:
其他好文 时间:
2014-08-01 23:13:42
阅读次数:
324
Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without changing its structure.
Note:
A solution using O(n)
space is pretty straight...
分类:
其他好文 时间:
2014-07-30 17:46:04
阅读次数:
244
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center)....
分类:
其他好文 时间:
2014-07-30 14:48:53
阅读次数:
216
遍历二叉树是按一定的规则将树中的结点排列成一个线性序列,即是对非线性结构的线性化操作。如何找到遍历过程中动态得到的每个结点的直接前驱和直接后继(第一个和最后一个除外)?如何保存这些信息?设一棵二叉树有n个结点,则有n-1条边(指针连线) , 而n个结点共有2n个指针域(Lchild和Rchild) ...
分类:
编程语言 时间:
2014-07-30 00:22:22
阅读次数:
593