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

新西兰网站开发专业有没有做那事的网站

新西兰网站开发专业,有没有做那事的网站,网络书签 wordpress,厦门微信网站开发目录 一、基本二叉树 1.1结构 1.2前序遍历(注意三种遍历中Visit所在的位置) 1.2中序遍历 1.3后序遍历 二、真题实战 2.1KY11 二叉树遍历(清华大学复试上机题)【较难】 2.2KY212 二叉树遍历二叉树遍历(华中科技大…

目录

一、基本二叉树

1.1结构

1.2前序遍历(注意三种遍历中Visit所在的位置)

1.2中序遍历

1.3后序遍历

二、真题实战

2.1KY11 二叉树遍历(清华大学复试上机题)【较难】

2.2KY212 二叉树遍历二叉树遍历(华中科技大学复试题)【中等】


一、基本二叉树

1.1结构

首先定义二叉树的结构

struct TreeNode{//数据类型 变量;char data;TreeNode *leftChild;  //左子树 TreeNode *rightChild; //右子树 TreeNode(char x) : data(x), leftChild(NULL), rightChild(NULL) {}
};

 关于建树,看玩遍历后看题解。

1.2前序遍历(注意三种遍历中Visit所在的位置

Visit是访问格式,比如print输出,不一定是函数

访问根节点-左子树-右子树,遍历过程可以想成逆时针。如图所示。

void PreOrder(TreeNode* root){if(root==NULL){return;}Visit(root->data);PreOrder(root->leftChild);PreOrder(root->rightChild);return ;
}

1.2中序遍历

左-中-右

void InOrder(TreeNode* root){if(root==NULL){return ;}InOrder(root->leftChild);Visit(root->data);InOrder(root->rightChild);return ;
}

1.3后序遍历

左-右-根

void PostOrder(TreeNode* root){if(root==NULL){return ;}PostOrder(root->leftChild);PostOrder(root->rightChild);Visit(root->data);return ;
}

1.4层次遍历

暂时没有遇到,先不更,需要用到 队列辅助更新。

二、真题实战

2.1KY11 二叉树遍历(清华大学复试上机题)【较难】

二叉树遍历_牛客题霸_牛客网

描述

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入描述:

输入包括1行字符串,长度不超过100。

输出描述:

可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。

示例1

输入:

abc##de#g##f###

复制输出:

c b e g d f a 

总结:注意建立树的顺序和所需变量,root->leftChild或者root->rightChild的赋值。异常情况返回NULL,以及最后返回root。整体就是:确定结构-建树方法-遍历方法-主程序。

#include <bits/stdc++.h>
using namespace std;
struct TreeNode{//数据类型 变量;char data;TreeNode *leftChild;  //左子树 TreeNode *rightChild; //右子树 TreeNode(char x) : data(x), leftChild(NULL), rightChild(NULL) {}
};//建树 先序遍历 中-左-右 
TreeNode* PreBuild(int& index,string s ){char c=s[index];index++;if(c=='#'){return NULL;}TreeNode* root=new TreeNode(c);root->leftChild=PreBuild(index,s);root->rightChild=PreBuild(index,s);return root;
}void InOrder(TreeNode* root){if(root==NULL){return ;}InOrder(root->leftChild);cout<<root->data<<" ";InOrder(root->rightChild);return ;
}int main() {string s;while(cin>>s){int index=0;TreeNode* root=PreBuild(index,s);InOrder(root);}return 0;
}

2.2KY212 二叉树遍历二叉树遍历(华中科技大学复试题)【中等】

二叉树遍历_牛客题霸_牛客网

描述

二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。

给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。

输入描述:

两个字符串,其长度n均小于等于26。 第一行为前序遍历,第二行为中序遍历。 二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。

输出描述:

输入样例可能有多组,对于每组测试样例, 输出一行,为后序遍历的字符串。

示例1

输入:

ABC
BAC
FDXEAG
XDEFAG

复制输出:

BCA
XEDGAF

总结:我感觉这个建树比上一个难许多,整道题就是考察建树。

根据先序遍历的性质,第一个节点就是根节点,根据这个入手。(做题时一定要结合数据结构的特性) 

再根据中序遍历的性质,找到根节点索引位置的话,左边的就是左子树,右边的就是右子树。再递归处理。

这个根节点索引位置前序遍历字符串中序遍历字符串都能用,都是分块节点。

递归停止的标志就是先序遍历字符串长度为0,返回NULL(空节点)

函数解释:sub = str.substr(7, 5); // 从索引为7的位置提取长度为5的子字符串

sub = str.substr(7);代表从索引7开始到末尾的所有字符串 。

#include<bits/stdc++.h>
using namespace std;
struct TreeNode{char data;TreeNode* leftChild;TreeNode* rightChild;TreeNode(char c):data(c),leftChild(NULL),rightChild(NULL){}
};
TreeNode* Build(string s1,string s2){if(s1.size()==0){return NULL;}char c=s1[0];TreeNode* root=new TreeNode(c);int index=s2.find(c);root->leftChild=Build(s1.substr(1,index),s2.substr(0,index));root->rightChild=Build(s1.substr(index+1),s2.substr(index+1));return root; 
}void PostOrder(TreeNode* root){if(root==NULL){return;}PostOrder(root->leftChild);PostOrder(root->rightChild);cout<<root->data;return ;
}int main() 
{string s1,s2,s3,s4;cin>>s1>>s2>>s3>>s4;TreeNode* root=Build(s1,s2);PostOrder(root);cout<<endl;TreeNode* root2=Build(s3,s4);PostOrder(root2);return 0;
}

http://www.yayakq.cn/news/376255/

相关文章:

  • 网站建设中常用的技术有哪些wordpress文章目录页
  • 一个公司做网站需要注意什么条件网络服务者
  • 适合毕设做的简单网站一站式服务门户
  • 在线教育自助网站建设平台如何给网站做证书
  • 官网建设公司前十seo技术网网
  • 广饶网站定制网站优化的主要任务
  • 淄博网站推广哪家好云服务器怎么架设网站
  • 全国中高风险地区最新名单惠州百度seo哪家好
  • 培训网站建设方案模板下载购物网站开发方案
  • 网站备案电话号码wordpress主题制作教程
  • 外贸做网站的好处下班后做兼职任务网站
  • 创建网站忘记了怎么办百度公司网站制作
  • 如何在网站上做支付功能网站托管工作室
  • 太湖网站建设有没有做那个的视频网站
  • 网站新闻置顶怎么做成都网站制作芜湖厂商
  • 网站建设的软件是哪个黑龙江网站建设业务
  • 现在的网站设计山东网站
  • 网站备案失效推广管理
  • 美团这个网站多少钱做的肇庆网站seo
  • 如何做网站调研三网站合一
  • 东莞品牌型网站建设价格域名是否就是网站
  • 自己做网站教学视频教程平面设计入门
  • 做a免费网站如何建设英文网站
  • 网站建设哪家做的好淘客网站咋做
  • 广州住建局官网企业网站怎么做seo
  • 部门网站建设宗旨seo 网站
  • 南宁响应式网站制作WordPress转发新闻内容
  • 建立网站的费用免费传奇网站域名哪里注册
  • 产业园门户网站建设方案设计公司资质等级
  • 做二维码推送网站石家庄市建设局网站信息公开