Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
这类问题非常适合用递归做,递归思路如下:
前序遍历的第一个节点必然是根节点,中序遍历中根节点之前的节...
分类:
其他好文 时间:
2014-12-03 21:27:24
阅读次数:
172
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1
/ 2 5
/ \ 3 4 6
The flattened tree should look like:
1
2
3
4
5
6
递归算法
这种问题非常适合用...
分类:
其他好文 时间:
2014-12-02 15:19:59
阅读次数:
168
题目:请完成一个函数,输入二叉树,该函数输出他的镜像。二叉树的节点定义如下:structBinaryTreeNode
{
intm_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight;
};分析:我们先进行前序遍历这棵树上的结点,如果遍历到的结点有子节点,就交换他的两个子节点。当交换..
分类:
其他好文 时间:
2014-12-01 16:23:27
阅读次数:
137
二叉树先序后序中序的重建与遍历:ZOJ1944 已知前序和中序求后序不建树版#include #include #include using namespace std; char pre[30],in[30]; int num; void Postorder(int l,int r) ...
分类:
其他好文 时间:
2014-12-01 00:39:17
阅读次数:
256
问题:对一个二叉搜索树进行前序遍历,打印出每个结点的值,但是不能使用递归。
解题:
(1)递归可以用迭代来替代
(2)了解递归的前序遍历中发生了什么:①打印出根节点(或子树根节点)的值;②对左子树进行前序遍历;③对右子树进行前序遍历。
递归隐式地使用了一个数据结构栈来存放调用栈上的数据。实际上,递归调用用于隐式地在栈上存储右子树的地址,因此左子树遍历完后,可以继续遍历右...
分类:
其他好文 时间:
2014-11-30 11:30:09
阅读次数:
141
要求:Given a binary tree, flatten it to a linked list in-place.将二叉树转化为平坦序列的树。比如:结题思路:该题有个提示,转化后的树的序列正好是二叉树前序遍历所得到的序列,所以,该题第一个思路就是利用前序遍历的方式来做。第二个思路:我们可以利...
分类:
其他好文 时间:
2014-11-29 18:48:51
阅读次数:
196
代码实现:给定一个中序遍历和前序遍历怎么构造出这颗树!(假定数中没有重复的数字)因为没有规定是左小右大的树,所以我们随意画一颗数,来进行判断应该是满足题意的。 3 / \ 2 4 /\ / \1 6 5 7中序遍历:1263547.后序遍历:16257...
分类:
其他好文 时间:
2014-11-29 14:27:53
阅读次数:
111
最近在写数据结构中二叉树的遍历,这里总结一下:
先序递归遍历:
void PreTravel(BiTree T)
{//前序递归遍历
if(T)
{
printf("%c",T->data);
PreTravel(T->lchild);
PreTravel(T->rchild);
}
}
中序递归遍历:
void MidTravel(BiTree ...
分类:
其他好文 时间:
2014-11-28 10:16:15
阅读次数:
191
#include
#include
typedef struct node{
int data;
struct node*lchild,*rchild;
}Tree,*BiTree;
BiTree creat_Tree(BiTree root,int num){//建立二叉树
if(root==NULL)
{
root=...
分类:
其他好文 时间:
2014-11-27 20:37:04
阅读次数:
184
要求:通过二叉树的前序和中序遍历序列构建一颗二叉树代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 TreeNode(int x):...
分类:
其他好文 时间:
2014-11-27 17:49:13
阅读次数:
220