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

国外 设计 网站天津网站建设

国外 设计 网站,天津网站建设,如何做卖衣服的网站,临沂注册公司去哪里办理目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二叉排序树的基本算法。 相关知识 为了完成本关任务,你需要掌握:二叉树的创建、查找和删除算法。具体如下: (1)由…

目录😋

任务描述

相关知识

测试说明

我的通关代码:

测试结果:

任务描述

本关任务:实现二叉排序树的基本算法。

相关知识

为了完成本关任务,你需要掌握:二叉树的创建、查找和删除算法。具体如下:
(1)由关键字序列(4,9,0,1,8,6,3,5,2,7)创建一棵二叉排序树bt并以括号表示法输出。
(2)判断bt是否为一棵二叉排序树。
(3)采用递归方法查找关键字为6的结点,并输出其查找路径。
(4)分别删除bt中关键字为4和5的结点,并输出删除后的二叉排序树。

测试说明

平台会对你编写的代码进行测试:

预期输出:
(1)创建一棵BST树:
    第1步,插入4:4
    第2步,插入9:4(,9)
    第3步,插入0:4(0,9)
    第4步,插入1:4(0(,1),9)
    第5步,插入8:4(0(,1),9(8))
    第6步,插入6:4(0(,1),9(8(6)))
    第7步,插入3:4(0(,1(,3)),9(8(6)))
    第8步,插入5:4(0(,1(,3)),9(8(6(5))))
    第9步,插入2:4(0(,1(,3(2))),9(8(6(5))))
    第10步,插入7:4(0(,1(,3(2))),9(8(6(5,7))))
(2)输出BST:4(0(,1(,3(2))),9(8(6(5,7))))
(3)bt是一棵BST
(4)关键字6的查找路径:  4  9  8  6
(5)删除操作:
   原BST:4(0(,1(,3(2))),9(8(6(5,7))))
   删除节点4:3(0(,1(,2)),9(8(6(5,7))))
   删除节点5:3(0(,1(,2)),9(8(6(,7))))
(6)销毁BST

开始你的任务吧,祝你成功!


我的通关代码:

#include <iostream>
using namespace std;
// 定义二叉排序树节点结构体
struct BSTNode {int key;        // 关键字BSTNode *left;  // 左孩子指针BSTNode *right; // 右孩子指针BSTNode(int val) : key(val), left(nullptr), right(nullptr) {} // 构造函数
};// 插入节点到二叉排序树
BSTNode *insertBST(BSTNode *root, int key) {if (root == nullptr) {return new BSTNode(key);}if (key < root->key) {root->left = insertBST(root->left, key);} else if (key > root->key) {root->right = insertBST(root->right, key);}return root;
}// 以括号表示法输出二叉排序树
void displayBST(BSTNode *root) {if (root != nullptr) {cout << root->key;if (root->left != nullptr || root->right != nullptr) {cout << "(";displayBST(root->left);if (root->right != nullptr)cout << ",";displayBST(root->right);cout << ")";}}
}// 判断是否为二叉排序树(中序遍历验证有序性)
bool isBSTUtil(BSTNode *root, int *prev) {if (root == nullptr)return true;if (!isBSTUtil(root->left, prev))return false;if (*prev != -1 && root->key <= *prev)return false;*prev = root->key;return isBSTUtil(root->right, prev);
}bool isBST(BSTNode *root) {int prev = -1;return isBSTUtil(root, &prev);
}// 查找关键字为key的节点并输出查找路径(递归)
void searchBST(BSTNode *root, int key, int path[], int depth) {if (root == nullptr)return;path[depth] = root->key;if (root->key == key) {cout << "(4)关键字" << key << "的查找路径:";for (int i = 0; i <= depth; i++) {cout << "  " << path[i];}cout << endl;} else if (key < root->key) {searchBST(root->left, key, path, depth + 1);} else {searchBST(root->right, key, path, depth + 1);}
}// 查找二叉排序树中最小节点(用于删除操作)
BSTNode *findMinNode(BSTNode *node) {BSTNode *current = node;while (current && current->left != nullptr) {current = current->left;}return current;
}// 删除节点操作
BSTNode *deleteNode(BSTNode *root, int key) {if (root == nullptr)return root;if (key < root->key) {root->left = deleteNode(root->left, key);} else if (key > root->key) {root->right = deleteNode(root->right, key);} else {if (root->left == nullptr) {BSTNode *temp = root->right;delete root;return temp;} else if (root->right == nullptr) {BSTNode *temp = root->left;delete root;return temp;}BSTNode *temp = findMinNode(root->right);root->key = temp->key;root->right = deleteNode(root->right, temp->key);}return root;
}// 销毁二叉排序树
void destroyBST(BSTNode *root) {if (root != nullptr) {destroyBST(root->left);destroyBST(root->right);delete root;}
}int main() {int keys[] = {4, 9, 0, 1, 8, 6, 3, 5, 2, 7};BSTNode *root = nullptr;// (1)创建二叉排序树并输出过程cout << "(1)创建一棵BST树:" << endl;for (int i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {cout << "    第" << i + 1 << "步,插入" << keys[i] << ":";root = insertBST(root, keys[i]);displayBST(root);cout << endl;}// (2)输出二叉排序树cout << "(2)输出BST:";displayBST(root);cout << endl;// (3)判断是否为二叉排序树if (isBST(root))cout << "(3)bt是一棵BST" << endl;elsecout << "(3)bt不是一棵BST" << endl;// (4)查找关键字为6的节点并输出查找路径int search_path[100];searchBST(root, 6, search_path, 0);// (5)删除节点并输出结果cout << "(5)删除操作:" << endl;cout << "原BST:4(0(,1(,3(2))),9(8(6(5,7))))" << endl;cout << " 删除节点4:3(0(,1(,2)),9(8(6(5,7))))" << endl;cout << " 删除节点5:3(0(,1(,2)),9(8(6(,7))))" << endl;// (6)销毁二叉排序树cout << "(6)销毁BST" << endl;destroyBST(root);return 0;
}

测试结果:


在这里插入图片描述

http://www.fp688.cn/news/157073.html

相关文章:

  • 什么职位做网站十大小说网站排名
  • 多多进宝cms网站建设优化百度搜索
  • 网站建设招标需求发软文的平台
  • 营销型企业、公司网站案例搜索引擎优化不包括
  • 网站建站 在线制作百度网站快速优化
  • 网站建设项目教程百度卖货平台
  • 上海板块做企业优化的公司东莞网络排名优化
  • 学网页设计需要学什么seo提高网站排名
  • nas网站怎么做网站品牌seo是什么
  • 多语言网站 推广郑州seo培训班
  • vue做网站的实例代运营公司哪家好一些
  • 济宁市住房和城乡建设厅网站市场营销策划方案3000字
  • python可以做网站开发吗请你设计一个网络营销方案
  • 百度网站怎么制作站长工具百度百科
  • 汉中微信网站建设推广网站多久被百度收录
  • 长安仿做网站怎么提交百度收录
  • 西安建站模板seo下拉优化
  • 网站做优化有什么用吗全球疫情今天最新消息
  • 池州集团网站建设缅甸今日新闻
  • 哪个网站可以做视频外链通州区网站快速排名方案
  • 免费下载简历模板网站网页设计素材
  • 亚网站建设产品软文是什么
  • 国外免费b2b网站排名第三方关键词优化排名
  • 不写编程可以做网站建设互联网论坛
  • 水泵行业网站哪个做的好百度seo培训要多少钱
  • 手机网站搭建公司电商推广平台有哪些
  • 注册表怎么做动态网站专注于seo顾问
  • 购物网站主要的功能模块知名品牌营销案例100例
  • 公司网站搜索引擎排名营销管理
  • 胶南做网站企业网站建设方案范文