二叉搜索树的增删查

介绍

二叉树搜索树(BST)是二叉树的一种特殊表示形式,主要有以下特性:

  • 每个节点的值必须大于存储在左侧子树的任何值
  • 每个节点的值必须小于存储在右侧子树的任何值
  • 任意节点的左右子树也分别为二叉查找树

例子:

bst

Read More

Bagikan Komentar

平衡二叉树的插入与删除

定义

AVL树是带有平衡条件的二叉查找树。它要求在AVL树中任何节点的两个子树的高度(高度是指节点到一片树叶的最长路径的长) 最大差别为1,如下图所示:

AVL

Read More

Bagikan Komentar

RabbitMQ的安装详解

RabbitMQ简介

RabbitMQ是采用Erlang语言实现AMQP(高级消息队列协议)的消息中间件。

RabbitMQ的安装

这里所有的安装操作都是在Centos 7系统下进行的,RabbitMQ的安装方式其实有两种,一种是直接在Linux系统中安装,一种是在容器中安装,这里指Docker容器。对于一些简单的测试环境或者小型项目,我更愿意在Docker中安装使用,因为在Docker中安装更方便,容器帮我们做了很多工作。

Read More

Bagikan Komentar

死磕排序算法之堆排序

介绍

堆排序就是利用堆这种数据结构来实现的一种排序算法,平均时间复杂度为O(nlogn),空间复杂度为O(1)

堆是一种完全二叉树,即除了最底层,其他层的节点都被元素填满,且最底层尽可能地从左到右填入

堆有堆序性,每个结点的值都大于或等于其左右孩子的值,称为大顶堆,每个结点的值都小于或等于其左右孩子的值,称为小顶堆。

Read More

Bagikan Komentar

MySQL常用语句(二)

前言

这文主要介绍MySQL查询,联结表,全文索引的常用语句

使用子查询

使用IN操作符进行子查询

1
select cust_id from orders where order_num in (select order_num from orderitems where prod_id = 'TNT2')

作为计算字段使用子查询

1
select cust_name,cust_state,(select count(*) from orders where orders_cust_id = customers.cust_id) as orders from customers order by cust_name;

Read More

Bagikan Komentar

动态代理的原理及其应用

动态代理的介绍

动态代理是一种在运行时动态地创建代理对象,动态地处理代理方法调用的机制。

实际上它是一种代理机制。代理可以看做是对调用目标的一个封装,直接通过代理来实现对目标代码的调用

与静态代理的比较

静态代理

提前写好代理类,每个业务类都要对应一个代理类,不灵活

Read More

Bagikan Komentar

MySQL常用语句(一)

关于Show语句

show语句可以用来查询数据库,表,列和服务器状态信息,show后面还可以跟like操作符,甚至有的还可以跟where语句

show variables 查看系统变量

show variables 显示MySQL系统变量的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show variables like "%char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.07 sec)

Read More

Bagikan Komentar

leecode题解 二叉搜索树迭代器

题目

实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。

调用 next() 将返回二叉搜索树中的下一个最小的数。

注意: next()hasNext() 操作的时间复杂度是O(1),并使用 O(h)内存,其中 h是树的高度。

原题地址:https://leetcode.com/problems/binary-search-tree-iterator/

Read More

Bagikan Komentar

leetcode题解 98 验证二叉搜索树

题目

给定一个二叉树,判断其是否是一个有效的二叉搜索树

一个二叉搜索树具有如下特征:

  • 节点的左子树只包含小于当前节点的数。
  • 节点的右子树只包含大于当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树

    Read More

Bagikan Komentar

直到世界的尽头

baseketball

前一阵看到新闻说 井上雄彦又出了几张灌篮高手的画稿,忍不住再次去刷了一遍灌篮高手,每当灌篮高手背景音乐响起的时候,总是会热血沸腾呀,还是很感动。

Read More

Bagikan Komentar