白书练习 二叉树的重构
来源:互联网 发布:网络机房运维方案 编辑:程序博客网 时间:2024/05/16 18:17
一.分析
二叉树的重构,给定一个二叉树的先序遍历和中序便利,输出后序遍历结果,首先明确问题,我们需要建构一个二叉树,然而二叉树的一个很重要的特点就是二叉树是递归定义的,所以我们往往递归的解决,那么问题就是给一段先序遍历和中序遍历后,确定出二叉树的三个重要元素即根节点和左子树和右子树,根据先序便利的特征我们知道第一个元素就是根节点,但是我们还需要确定左子树和右子树,由根据中序便利的特点我们知道在中序便利中根节点之前的元素属于左子树,之后的元素属于右子树,这样我们就确定了一个二叉树的三元素,之后我们就可以递归的解决这个问题。
//// main.cpp// 树的重构//// Created by 张嘉韬 on 16/2/4.// Copyright © 2016年 张嘉韬. All rights reserved.//#include <iostream>#include <cstring>using namespace std;char str1[500],str2[500],len;int find(char *s,char key){ int p=0; while(s[p]!=key) p++; return p;}void buid(int s1,int e1,int s2,int e2){ if(s1==e1) {cout<<str1[s1]<<" ";return;} else if(s1>e2) return; else { int p=find(str2,str1[s1]); buid(s1+1,p-s2+s1,s2,p-1); buid(p-s2+s1+1,e1,p+1,e2); cout<<str2[p]<<" "; }}int main(int argc, const char * argv[]) { freopen("/Users/zhangjiatao/Desktop/input.txt","r",stdin); cin>>str1; cin>>str2; len=strlen(str1); buid(0,len-1,0,len-1); return 0;}
0 0
- 白书练习 二叉树的重构
- 重构二叉树
- 重构二叉树
- 二叉树 重构
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 重构二叉树
- 白书练习 层次遍历 (二叉树的bfs)
- 重构二叉树&&判断二叉树的子结构
- 根据二叉树遍历的结果重构二叉树
- HUE中通过SQL进行数据分析
- HYSBZ/BZOJ 1034 [ZJOI2008] 泡泡堂BNB - 贪心
- 如何在本地环境配置github
- 图解Android事件传递之View篇
- C++扫雷
- 白书练习 二叉树的重构
- LEETCODE-- Valid Sudoku
- 每天一点点----项目中關鍵字 “ collectgarbage”
- C++ previous declaration of...with 'C++' linkage
- C++/MFC修行之路(3) MFC中各个类的互相访问/取指针
- HDU 1004.Let the Balloon Rise【找出出现次数最多的字符串】
- js中cookie的使用
- 互联网电视
- spring4+hessian实例^_^