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

宏升温岭网站建设怎么建立网站快捷方式

宏升温岭网站建设,怎么建立网站快捷方式,抖音推广联盟,网页游戏单机一、引言 在面试地平线的时候,聊到了二叉搜索树,让手撕二叉搜索树,以下是要求 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.khdw.cn/news/33380.html

相关文章:

  • 百度做一个网站怎么做呢如何实现网站的快速排名
  • 奇胜网络 邯郸网站建设四川企业seo
  • 海兴县做网站价格百度一下官方入口
  • 手机网站制作哪家公司好做神马seo快速排名软件
  • 自由型的网站宁波seo优化定制
  • 中国人民人寿保险公司官方网站登录推广产品的软文怎么写
  • 域名查询网站淄博seo培训
  • 泰州网页网站制作班级优化大师官网下载
  • 唐山做网站哪家公司好汕头seo代理商
  • 恐怖网站代码百度seo排名优化教程
  • 自己做小程序要钱吗百度seo服务方案
  • 酒店网站建设流程高级搜索百度
  • 名者观看网站站长之家论坛
  • 个人网站建设规划论文南昌网站设计
  • 做动图素材网站河北百度seo点击软件
  • 广西建设网桂建云网站互联网最赚钱的行业
  • 做图片素材的网站广告文案经典范例200字
  • 有啥网站是专做时尚穿搭营销策划书
  • 做养生的网站多吗b2b自动发布信息软件
  • 我的网站现在没有排名_我想问是不是花钱做百度推广就会有排名杭州免费网站制作
  • 南阳医疗网站建设公司如何让百度能查到自己
  • 利鑫做彩票网站杭州最专业的seo公司
  • 站长查询域名站长工具免费
  • 相亲网站牛推网络
  • 网站开发技术写什么内容云浮网站设计
  • 网站扫码怎么做sem培训班
  • 怎么给网站做404界面桂林seo
  • 杭州集团公司网站制作微信推广方案
  • 深圳网站制作就找兴田德润合肥网络推广有限公司
  • wordpress破解版 博客模板阿拉善盟seo