Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203881
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 798
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-14 14:54
文章分类

全部博文(87)

文章存档

2015年(87)

我的朋友

分类: C/C++

2015-10-14 21:50:29

二叉树的根结点(根据三种遍历)只可能在左右(子树)之间,或这左子树的左边,或右子树的右边。 
如果已知先序和中序(如果是中序和后序已知也可以,注意:如果是前序和后序的求中序是不可能实现的),先确定这棵二叉树。 
步骤:
1,初始化两个数组,存放先序合中序。 
2,对比先序和中序,在中序忠查找先序的第一个元素,则在中序遍历中将这个元素的左右各元素分成两部分。即的左边的部分都在这个元素的左子树中,右边的部分都在右子树中。 
3,然后从从先序的第二个元素开始继续上面的步骤。 

如: 
先序:
1 2 3 4 5 6 7 8 9 10 11
后序:
3 2 5 4 1 7 9 8 11 10 6 


level 
11 
22 3 
33 4 7 
45 8 
59 10 
611 
阅读(940) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~