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

便捷的网站建设平台闵行20路

便捷的网站建设平台,闵行20路,erp系统定制,建手机网站要多少钱一、引言 在面试地平线的时候,聊到了二叉搜索树,让手撕二叉搜索树,以下是要求 1、用类模板实现二叉搜索树 2、写一个函数,实现给一个vector数组,转换成二叉搜索树 3、写出二叉搜索树的后序遍历 二、代码实现 #inc…

一、引言

在面试地平线的时候,聊到了二叉搜索树,让手撕二叉搜索树,以下是要求

1、用类模板实现二叉搜索树

2、写一个函数,实现给一个vector数组,转换成二叉搜索树

3、写出二叉搜索树的后序遍历

 

二、代码实现

#include <iostream>
#include <vector>using namespace std;template <typename T>
struct TreeNode {T val;TreeNode* left;TreeNode* right;TreeNode(T x) : val(x), left(NULL), right(NULL) {}
};template <typename T>
class BST {
public:BST() : root(NULL) {}void insert(T val) {if (root == NULL) {root = new TreeNode<T>(val);} else {insert(root, val);}}bool find(T val) {return find(root, val);}void postorderTraversal() {postorderTraversal(root);std::cout << std::endl;}private:TreeNode<T>* root;void insert(TreeNode<T>* node, T val) {if (val < node->val) {if (node->left == NULL) {node->left = new TreeNode<T>(val);} else {insert(node->left, val);}} else {if (node->right == NULL) {node->right = new TreeNode<T>(val);} else {insert(node->right, val);}}}bool find(TreeNode<T>* node, T val) {if (node == NULL) {return false;}if (val == node->val) {return true;} else if (val < node->val) {return find(node->left, val);} else {return find(node->right, val);}}void postorderTraversal(TreeNode<T>* node) {if (node == NULL) {return;}postorderTraversal(node->left);postorderTraversal(node->right);std::cout << node->val << " ";}
};int main() {vector<int> arr = {5, 3, 7, 2, 4, 6, 8};BST<int> bst;//可以用以下这种方法将一个vector数组转换成二叉搜索树for (int i = 0; i < arr.size(); i++) {bst.insert(arr[i]);}bst.postorderTraversal(); // 输出:2 4 3 6 8 5 7return 0;
}

延伸一个实现,实现一个函数,就是将一个vector有序数组转换成高度平衡的二叉搜索树

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),   right(right) {}* };*/TreeNode* sortedArrayToBST(vector<int>& nums) 
{return build(nums, 0, nums.size() - 1);
}TreeNode* build(vector<int>& nums, int l, int r) {if (l > r) return nullptr;int mid = l + r >> 1;auto root = new TreeNode(nums[mid]);root->left = build(nums, l, mid - 1);root->right = build(nums, mid + 1, r);return root;
}

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

相关文章:

  • AWS免费套餐做网站可以吗查看网站dns服务器
  • 网站产品关键词导出网上做平面设计的网站
  • 商城网站开发定制wordpress 实现相关文章
  • 咸宁网站设计wordpress video标签
  • 广州英文网站制作网页页面下载
  • 哪里有学做ppt的网站如何建立公司网站域名
  • 贵州省住房和城乡建设厅官网站首页wordpress中文转英文
  • 虚拟主机如何做网站邯郸ui设计师招聘
  • 东拼西凑网站谁做的wordpress 看不到图片
  • 网站项目建设目标用自己电脑做服务器建网站
  • 四川圣泽建设集团有限公司网站上海政务服务网
  • 网站建设多少wordpress容器
  • 国外企业合作的网站建站公司属于什么类型
  • 湘潭网站建设企业网络营销方式单一怎么办
  • 做网上推广网站wordpress用户二级域名
  • 网站阵地建设怎么建一个网站
  • 如何用word做网站地图wordpress修改菜单栏
  • 网站建设考题简短的营销软文范文
  • 购物网站的商品展示模块不需要写代码的网站开发软件
  • 建设工程信息在什么网站发布网页游戏平台代理加盟
  • 安卓手机网站开发工具石家庄网站建设教程
  • 网站服务器容器公司网站建设模板
  • 开发一个网站需要多少钱上海网站备案在哪里查询
  • 中英文网站建设方案360排名优化工具
  • 河南省住房和城乡建设厅网站首页一个网站项目多少钱
  • 视频网站备案流程图做网站时的兼容问题
  • 手机网站和pc网站网站建设与网站开发
  • python可以做网站企业培训方案制定
  • 济南网站建设推荐q479185700上快论坛交流平台有哪些
  • 做网站什么样的域名好wordpress用户更改不了密码