【王道数据结构】【chapter5树与二叉树】【P159t17~19】【统考真题】

目录

2014年统考

2017年统考

2022年统考


2014年统考

#include <iostream>
#include <stack>
#include <queue>
typedef struct treenode{int weight;struct treenode *left;struct treenode *right;
}treenode,*ptreenode;ptreenode buytreenode(int x)
{ptreenode n=(ptreenode) malloc(sizeof (treenode));n->weight=x;n->left= nullptr,n->right= nullptr;return n;
}
ptreenode build_tree1()
{ptreenode root= buytreenode(1);root->left= buytreenode(2);root->right= buytreenode(3);root->left->left= buytreenode(4);root->left->right= buytreenode(5);root->right->left= buytreenode(6);root->right->right= buytreenode(7);root->left->left->left= buytreenode(8);root->left->left->right= buytreenode(9);return root;
}void print_tree(ptreenode root) {std::queue<ptreenode> tmp;tmp.push(root);int s = tmp.size();while (!tmp.empty()) {ptreenode t = tmp.front();tmp.pop();s--;printf("%3d", t->weight);if (t->left) tmp.push(t->left);if (t->right) tmp.push(t->right);if (s == 0) puts(""), s = tmp.size();}
}int _wpl(ptreenode root,int depth)
{if(root== nullptr) return 0;if(!root->left&&!root->right) return root->weight *depth;return _wpl(root->left,depth+1)+ _wpl(root->right,depth+1);
}
int _wpl2(ptreenode root)
{if(root== nullptr) return 0;if(!root->left&&!root->right) return 0;int w_l,w_r;w_l= _wpl2(root->left);w_r= _wpl2(root->right);root->weight=root->left->weight+root->right->weight;return w_l+w_r+root->weight;}
int wpl(ptreenode root)
{return _wpl(root,0);
}
int wpl2(ptreenode root)
{return _wpl2(root);
}
int main() {ptreenode root1=build_tree1();print_tree(root1);printf("the answer should be:%3d\n",8*3+9*3+5*2+6*2+7*2);//方法1printf("%3d\n",wpl(root1));//方法2printf("%3d\n",wpl2(root1));return 0;
}

2017年统考

#include <iostream>
#include <stack>
#include <queue>
#include <string>typedef struct treenode {std::string data;struct treenode *left;struct treenode *right;
} treenode, *ptreenode;ptreenode buytreenode(std::string x) {ptreenode n = new treenode; // 使用 new 来动态分配内存n->data = x;n->left = nullptr;n->right = nullptr;return n;
}ptreenode build_tree1()
{ptreenode root= buytreenode("*");root->left= buytreenode("+");root->right= buytreenode("*");root->left->left= buytreenode("a");root->left->right= buytreenode("b");root->right->left= buytreenode("c");root->right->right= buytreenode("-");root->right->right->right= buytreenode("d");return root;
}ptreenode build_tree2()
{ptreenode root= buytreenode("+");root->left= buytreenode("*");root->right= buytreenode("-");root->left->left= buytreenode("a");root->left->right= buytreenode("b");root->right->right= buytreenode("-");root->right->right->left= buytreenode("c");root->right->right->right= buytreenode("d");return root;
}void print_tree(ptreenode root) {std::queue<ptreenode> tmp;tmp.push(root);int s = tmp.size();while (!tmp.empty()) {ptreenode t = tmp.front();tmp.pop();s--;printf("%3s", t->data.c_str());if (t->left) tmp.push(t->left);if (t->right) tmp.push(t->right);if (s == 0) puts(""), s = tmp.size();}
}std::string trans(ptreenode root,int depth)
{if(root== nullptr) return "";if(!root->left&&!root->right) return root->data;if(depth==0){return trans(root->left,depth+1)+root->data+ trans(root->right,depth+1);}return "("+ trans(root->left,depth+1)+root->data+ trans(root->right,depth+1)+")";}
int main() {ptreenode root1=build_tree1();print_tree(root1);printf("%s\n",trans(root1,0).c_str());ptreenode root2=build_tree2();print_tree(root2);printf("%s\n",trans(root2,0).c_str());return 0;
}

2022年统考

#include <iostream>
#define MAX_SIZE 20
typedef struct{int SqBiTNode[MAX_SIZE];int ElemNum;//实际占用的数组元素个数
}SqBiTree;bool search_tree(SqBiTree tree,int pos)
{if (pos>tree.ElemNum||tree.SqBiTNode[pos]==-1) return true;if(pos*2+1<tree.ElemNum&&(pos*2+2)<tree.ElemNum&&tree.SqBiTNode[pos*2+1]!=-1&&tree.SqBiTNode[pos*2+2]!=-1){bool tmp=(tree.SqBiTNode[pos]>=tree.SqBiTNode[pos*2+1])&&(tree.SqBiTNode[pos]<=tree.SqBiTNode[pos*2+2]);return search_tree(tree,pos*2+1)&& search_tree(tree,pos*2+2)&&tmp;}if(pos*2+1<tree.ElemNum&&tree.SqBiTNode[pos*2+1]!=-1) return tree.SqBiTNode[pos]>=tree.SqBiTNode[pos*2+1]&& search_tree(tree,pos*2+1);if(pos*2+2<tree.ElemNum&&tree.SqBiTNode[pos*2+2]!=-1) return tree.SqBiTNode[pos]<=tree.SqBiTNode[pos*2+2]&& search_tree(tree,pos*2+2);}bool search_tree2(SqBiTree tree,int pos,int &pre)
{if (pos<tree.ElemNum&&tree.SqBiTNode[pos]!=-1) {if (!search_tree2(tree, 2 * pos + 1, pre)) return false;if (tree.SqBiTNode[pos] <= pre) return false;pre = tree.SqBiTNode[pos];if (!search_tree2(tree, 2 * pos + 2, pre)) return false;}return true;
}
int main() {SqBiTree t1;int values[] = {40, 25, 60, -1, 30, -1, 80, -1, -1, 27};std::copy(values, values + sizeof(values) / sizeof(values[0]), t1.SqBiTNode);t1.ElemNum=10;// 打印数组for (int i = 0; i < t1.ElemNum; ++i) {std::cout << t1.SqBiTNode[i] << " ";}std::cout << std::endl;SqBiTree t2;int values2[] = {40,50,60,-1,30,-1,-1,-1,-1,-1,35};std::copy(values2, values + sizeof(values2) / sizeof(values2[0]), t2.SqBiTNode);t2.ElemNum=11;// 打印数组for (int i = 0; i < t2.ElemNum; ++i) {std::cout << t2.SqBiTNode[i] << " ";}std::cout << std::endl;if(search_tree(t1,0)) printf("tree1 is a search tree\n");else printf("tree1 is not a search tree\n");if(search_tree(t2,0)) printf("tree2 is a search tree\n");else printf("tree2 is not a search tree\n");int pre=-1;if(search_tree2(t1,0,pre)) printf("tree1 is a search tree\n");else printf("tree1 is not a search tree\n");pre=-1;if(search_tree2(t2,0,pre)) printf("tree2 is a search tree\n");else printf("tree2 is not a search tree\n");return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/258285.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【web | CTF】BUUCTF [BJDCTF2020]Easy MD5

天命&#xff1a;好像也挺实用的题目&#xff0c;也是比较经典吧 天命&#xff1a;把php的MD5漏洞都玩了一遍 第一关&#xff1a;MD5绕过 先声明一下&#xff1a;这题的MD5是php&#xff0c;不是mysql的MD5&#xff0c;把我搞迷糊了 一进来题目啥也没有&#xff0c;那么就要看…

解密输入输出迷局:蓝桥杯与ACM中C++/C语言常见问题揭秘

关于C中的常见输入输出汇总 带空格的字符串&#xff1a; ​ 对于这种输入方式我们选择使用gets() 函数来进行输入&#xff0c;gets用于从标准输入&#xff08;通常是键盘&#xff09;读取一行文本并将其存储为字符串&#xff0c;直到遇到换行符&#xff08;‘\n’&#xff09…

飞天使-k8s知识点20-kubernetes实操5-pod更新与暂停-statefulset

文章目录 资源调度 Deployment&#xff1a;扩缩容资源调度 Deployment&#xff1a;更新的暂停与恢复资源调度 StatefulSet&#xff1a;定义一个有状态服务headless service 金丝雀发布 资源调度 Deployment&#xff1a;扩缩容 扩容和缩容&#xff0c;常用的功能 scale[rootkub…

上位机图像处理和嵌入式模块部署(图像项目处理过程)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于一般的图像项目来说&#xff0c;图像处理只是工作当中的一部分。在整个项目处理的过程中有很多的内容需要处理&#xff0c;比如说了解需求、评…

二、ActiveMQ安装

ActiveMQ安装 一、相关环境二、安装Java8三、下载安装包四、启动五、其他命令六、开放端口七、后台管理 一、相关环境 环境&#xff1a;Centos7.9安装ActiveMQ版本&#xff1a;5.15.9JDK8 二、安装Java8 安装教程&#xff1a;https://qingsi.blog.csdn.net/article/details/…

react【三】受控组件/高阶组件/portals/fragment/严格模式/动画

文章目录 1、受控组件1.1 认识受控组件1.2 checkout1.3 selected1.4 非受控组件 2、高阶组件2.1 认识高阶组件2.2 应用1-props增强的基本使用2.3 对象增强的应用场景-context共享2.4 应用2-鉴权2.5 应用3 – 生命周期劫持2.6、高阶组件的意义 3、Portals4、fragment5、StrictMo…

17.3.1.6 自定义处理

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 模拟某款图像处理软件的处理&#xff0c;它只留下红色、绿色或者蓝色这样的单一颜色。 首先按照颜色划分了6个色系&#xff0c;分别…

disql备份还原

disql备份还原 前言 本文档根据官方文档&#xff0c;进行整理。 一、概述 在 disql 工具中使用 BACKUP 语句你可以备份整个数据库。通常情况下&#xff0c;在数据库实例配置归档后输入以下语句即可备份数据库&#xff1a; BACKUP DATABASE BACKUPSET db_bak_01;语句执行完…

java生态环境评价Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 生态环境评价管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysq…

.netcore音乐播放器 musicPlayer

html音乐播放器 .net core mvc 音乐播放器 支持上传本地音乐到云端 支持通过文件夹创建歌单(不需要数据库和其他数据存储) 通过歌单分类 播放歌曲 支持播放暂停 上一首 下一首切换 支持显示歌曲列表 歌单切换 展示歌曲根据歌单名去获取歌曲显示 功能 版权原因 或者想创建自己的…

macOS 安装 conda

macOS 安装 conda 安装 conda参考 Conda是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装和管理软件包和其依赖项。 安装 conda mkdir miniconda3 cd miniconda3 bash Miniconda3-latest-MacOSX-x86_64.sh$ conda list参考 macOS 安装 conda开始使用conda

python+django学习交流论坛系统244t6

系统可以提供信息显示和相应服务&#xff0c;其管理员管理用户发布的博客文章以及用户之间的论坛交流信息&#xff0c;管理留言以及文章分类信息。用户在论坛交流模块发布帖子以及评论帖子&#xff0c;在前台查看和评论其他用户发布的博客文章&#xff0c;收藏博客文章&#xf…

esp8266-01s WIFI模块使用(一)- AT指令

时间记录&#xff1a;2024/2/15 一、注意事项 &#xff08;1&#xff09;使用英文双引号表示字符串数据 &#xff08;2&#xff09;默认波特率115200 &#xff08;3&#xff09;AT指令以“\r\n”结尾 &#xff08;4&#xff09;3.3V电源接口先连接单片机的3.3V&#xff0c;如…

阿里云“BGP(多线)”和“BGP(多线)_精品”区别价格对比

阿里云香港等地域服务器的网络线路类型可以选择BGP&#xff08;多线&#xff09;和 BGP&#xff08;多线&#xff09;精品&#xff0c;普通的BGP多线和精品有什么区别&#xff1f;BGP&#xff08;多线&#xff09;适用于香港本地、香港和海外之间的互联网访问。使用BGP&#xf…

用HTML5 Canvas创造视觉盛宴——动态彩色线条效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- 声明文档类型为XHTML 1.0 Transitional -…

ElasticSearch之search API

写在前面 本文看下查询相关内容&#xff0c;这也是我们在实际工作中接触的最多的&#xff0c;所以有必要好好学习下&#xff01; 1&#xff1a;查询的分类 主要分为如下2类&#xff1a; 1:基于get查询参数的URI search 2&#xff1a;基于post body的request body search&am…

Netty Review - 直接内存的应用及源码分析

文章目录 Pre概述应用访问效率&#xff1a; 堆内存 VS 直接内存申请效率&#xff1a; 堆内存 VS 直接内存数据存储结构&#xff1a; 堆内存 VS 直接内存结论 ByteBuffer.allocateDirect 源码分析unsafe.allocateMemory(size) ---> C方法 JVM参数 -XX:MaxDirectMemorySize直接…

隐函数的求导【高数笔记】

1. 什么是隐函数&#xff1f; 2. 隐函数的做题步骤&#xff1f; 3. 隐函数中的复合函数求解法&#xff0c;与求导中复合函数求解法有什么不同&#xff1f; 4. 隐函数求导的过程中需要注意什么&#xff1f;

Mysql运维篇(四) Xtarbackup--备份与恢复练习

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 前言 xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具&#xff0c;具有…

164基于matlab的奇异值分解、小波降噪、zoom细化

基于matlab的奇异值分解、小波降噪、zoom细化。程序已调通&#xff0c;可直接运行。 164 奇异值分解 小波降噪 zoom细化 (xiaohongshu.com)