当前位置: 首页 > news >正文

织梦做商城类网站教程/seo优化是什么

织梦做商城类网站教程,seo优化是什么,b2c电子商务网站建设价格多少钱,在线crm百科题目链接地址: http://ac.jobdu.com/problem.php?pid1385 题目1385:重建二叉树 时间限制:1 秒内存限制:32 兆特殊判题:否提交:4441解决:1321 题目描写叙述: 输入某二叉树的前序遍历…

题目链接地址:
http://ac.jobdu.com/problem.php?pid=1385

题目1385:重建二叉树

时间限制:1 秒内存限制:32 兆特殊判题:否提交:4441解决:1321
题目描写叙述:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含反复的数字。比如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。

输入:
输入可能包括多个測试例子,对于每一个測试案例,
输入的第一行为一个整数n(1<=n<=1000):代表二叉树的节点个数。
输入的第二行包括n个整数(当中每一个元素a的范围为(1<=a<=1000)):代表二叉树的前序遍历序列。
输入的第三行包括n个整数(当中每一个元素a的范围为(1<=a<=1000)):代表二叉树的中序遍历序列。
输出:
相应每一个測试案例,输出一行:
假设题目中所给的前序和中序遍历序列能构成一棵二叉树。则输出n个整数。代表二叉树的后序遍历序列,每一个元素后面都有空格。


假设题目中所给的前序和中序遍历序列不能构成一棵二叉树,则输出”No”。
例子输入:
8
1 2 4 7 3 5 6 8
4 7 2 1 5 3 8 6
8
1 2 4 7 3 5 6 8
4 1 2 7 5 3 8 6
例子输出:
7 4 2 5 8 6 3 1
No


分析:

採用递归重构二叉树

(左代表左子树。右代表右子树,根代表根结点)
    前序遍历:根-左-右
    中序遍历:左-根-右
    后序遍历:左-右-根
定理:给定某棵二叉树的中序遍历序列和前序遍历序列(或者后序遍历序列)就能唯一构造出该二叉树。


原因——由于通过前序遍历(或者后序遍历)能够找到二叉树的根结点。再依据根结点在中序遍历序列中的位置就能够确定根结点的左右子树。由于二叉树是一种递归结构,二叉树的左右子树也都是二叉树,所以递归依据前序和中序遍历序列能够确定各个结点之间的父子关系。

採用递归的思路将问题转化为本质同样可是规模更小的子问题。
前序遍历的第一个节点为根节点,依据根节点的值在中序遍历中找到其相应位置。左边是左子树,右边是右子树。然后左右递归求解就可以。


须要注意的是:假设中序遍历序列不包括前序遍历序列第一个元素则表明无法重构二叉树。
时间复杂度:
  每次在中序遍历中找根节点的位置须要O(n)的查找时间,推导复杂度:
    T(n) = 2 * T(n / 2) + O(1) + O(n)
    T(n) = O(n * log(n))
空间复杂度   
  递归求解,由于每一个节点都会被递归到。所以空间复杂度为O(n)。
 


代码:

/********************************* 
----------------------------------- 
【剑指Offer面试题】 九度OJ1385:重建二叉树
----------------------------------- 
Author:牧之丶  Date:2015年
Email:bzhou84@163.com 
**********************************/ 
#include<stdio.h>
#include <iostream>
using namespace std;
#define MAX 1005// 二叉树的结点
typedef struct Node
{int data;            // 数据域Node * lChild;       // 左子树Node * rChild;       // 右子树
}BTNode;
BTNode bTNode[MAX];bool RebuildBinaryTree; // 推断是否能重构二叉树
int preOrder[MAX];      
int inOrder[MAX];      // 初始化二叉树中的每一个结点
void initBinaryTree(int n)
{int i;RebuildBinaryTree = true;for(i = 0;i < n;i++){bTNode[i].data = preOrder[i];  bTNode[i].lChild = NULL;bTNode[i].rChild = NULL;}
}//重构二叉树
void reBuildBinaryTree(int beginPreOrder,int endPreOrder,int beginInOrder,int endInOrder)
{int i;int  position = -1;      // 前序遍历序列第一个结点在中序遍历序列中的位置bool flag = false;       // 推断前序遍历序列中的第一个结点是否在中序遍历序列中for(i = beginInOrder;i <= endInOrder;i++)   // 遍历二叉树的中序遍历序列,得到根结点在中序遍历序列中的位置{if(preOrder[beginPreOrder] == inOrder[i]){position = i - beginInOrder;flag = true;break;}}if(false == flag){RebuildBinaryTree = false;return;}else{//重构左子树if(beginPreOrder + 1 <= beginPreOrder +  position && beginInOrder <= beginInOrder +  position - 1){bTNode[beginPreOrder].lChild = &bTNode[beginPreOrder + 1];reBuildBinaryTree(beginPreOrder + 1,beginPreOrder +  position,beginInOrder,beginInOrder +  position - 1);}//重构右子树if(beginPreOrder +  position + 1 <= endPreOrder && beginInOrder +  position + 1 <= endInOrder){bTNode[beginPreOrder].rChild = &bTNode[beginPreOrder +  position + 1];reBuildBinaryTree(beginPreOrder +  position + 1,endPreOrder,beginInOrder +  position + 1,endInOrder);}}
}//后序遍历输出
void postOrder(BTNode * root)
{if(NULL == root)return;else{postOrder(root -> lChild);postOrder(root -> rChild);cout<<root -> data<<" ";}
}int main()
{int n;while(cin>>n){for(int i = 0;i < n;i++){scanf("%d",&preOrder[i]);}for(int i = 0;i < n;i++){scanf("%d",&inOrder[i]);}initBinaryTree(n);reBuildBinaryTree(0,n - 1,0,n - 1);if(false == RebuildBinaryTree)cout<<"No"<<endl;else{postOrder(&bTNode[0]); //bTNode[0]是根结点cout<<endl;}}return 0;
}/**************************************************************Problem: 1385Language: C++Result: AcceptedTime:10 msMemory:1552 kb
****************************************************************/

转载于:https://www.cnblogs.com/zhchoutai/p/8520978.html

http://www.lbrq.cn/news/100153.html

相关文章:

  • crm系统软件排名/重庆seo教程
  • 淘宝客做网站教程/9个广州seo推广神技
  • 网站建设 自动生成/百度一下百度主页
  • 一个专门做试题的网站/怎么网上宣传自己的产品
  • 网站建设公司主营业务/新的网站怎么推广
  • 网站开发常用的开发工具/公司网页制作
  • 目前国内有哪些网站做家具回收/代做百度收录排名
  • 软件网站开发合同/个人seo外包
  • 品牌网吴为简介/霸榜seo
  • 申通物流的网站建设/关键词优化公司
  • 网站建设需求分析要做的事/在线优化工具
  • 网站建设绵阳辉煌电商/949公社招聘信息
  • 梧州做网站建设/苏州疫情最新消息
  • wordpress 全站 下载/网络营销方式对比分析
  • 微企免费网站建设/seo做关键词怎么收费的
  • ps做网站 字体多大/网站的推广方法
  • 家乡网站建设策划书模板/口碑营销策略
  • 视频剪辑找什么公司/免费seo网站诊断
  • wordpress多站用户/百度网盘客服电话
  • wordpress标签无法显示/seo营销推广多少钱
  • 音乐网站可以用什么语言做/免费b站推广网站2022
  • 专业做网站推广/站长工具使用
  • 产品推广方案范本3篇/太原seo顾问
  • 广告推广的好处/惠州百度关键词优化
  • 网站建设佰首选金手指六/百度搜索词热度查询
  • 个人专属logo设计/信息流优化师简历模板
  • wordpress keywords 用逗号 区分关键字/重庆seo全面优化
  • 四川省人民政府网站集约化建设/公关公司一般收费标准
  • 小型公司网站建设/广州番禺发布网
  • 有没有专门做衣服搭配的网站/注册百度推广账号
  • 【PSINS工具箱】MATLAB例程,二维平面上的组合导航,EKF融合速度、位置和IMU数据,4维观测量
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析9
  • 同题异构解决leetcode第3646题下一个特殊回文数
  • MacBook Pro M1升级Burp Suite2025.8
  • 从机器视觉到图像识别:计算机视觉的多维探索
  • kubeadm部署k8s集群环境搭建