算法设计
vision泉
厚积薄发,来日方长。
展开
-
平衡二叉树、B树(B-树)、B+树
平衡二叉树 中序遍历是从小到大,二分查找。 B树(B-树) 不是什么B减树好吧。 多路查找,可以是二叉、三叉等等 每一个节点都有(key、data-point、next-point)关键字、数据、子节点指针。 枝节点数ceil(m/2)-1~m-1,当m=5,2<=枝节点数<=4 优点:①层数低②利用磁盘块原理,提高IO利用率。 B+树 数据只存放在叶子节点上,即非叶子节点只有(key, next-point) 叶子节点保存了父节点指针。 Mysql索引就是用B+树的 ..原创 2020-06-18 11:16:11 · 228 阅读 · 0 评论 -
二叉树后序遍历
代码检测:leetcode 方法1:递归 class Solution { public: vector<int> res; vector<int> postorderTraversal(TreeNode* root) { if(!root) return res; if(root->left) postorderTraversal(root->left); if(root->right) pos原创 2020-06-09 18:18:53 · 150 阅读 · 0 评论 -
二分搜索代码
#include<bits\stdc++.h> using namespace std; int bin_search(vector<int> &nums, int target){ int left=0; int right=nums.size()-1; while(left<right){ int mid = (left+right)/2; if(nums[mid]>target) right=mid; else if(nums[mid]&.原创 2020-06-09 17:18:11 · 259 阅读 · 0 评论 -
快排代码
思路:找第一个为中间值,把小的放前面,大的放后面,重复。 以下spilt和partition函数都是找i(中间值)的位置。 #include<bits\stdc++.h> using namespace std; int spilt(vector<int> &nums, int low, int hight){ //一个个找,把小的放前面 int i=low; int x=nums[low];//选中一个为分界值 for(int j=low+1;j<=hi原创 2020-06-09 16:56:55 · 487 阅读 · 0 评论