一、基本介绍 1)平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树, 可以保证查询效率较高。 2)具有以下特点:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 3)平衡二叉树的常用实现方 ...
分类:
其他好文 时间:
2019-09-11 21:30:27
阅读次数:
95
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 思路: 二叉搜索树因其有序,故采用中序遍历,可以得到第K小的元素。 ...
分类:
其他好文 时间:
2019-09-10 18:11:14
阅读次数:
80
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1: 示例 2: 低级做法,中序遍历,看看是否是有序的 给定一个二叉树,判断其是否是一个有效的 ...
分类:
编程语言 时间:
2019-09-09 09:15:20
阅读次数:
89
知识摘要: 1.二叉搜索树(又叫:二叉排序树,二叉查找树): 遵循: Tree.left.val<Tree.val<Tree.right.val. 所以它的中序遍历一定是一个有序列。 2.其他一些树: 满二叉树:从上往下,除了叶子结点外,其他结点的左右子节点都存在。 完全二叉树:比满二叉树少几个叶子 ...
分类:
其他好文 时间:
2019-09-05 23:06:46
阅读次数:
91
基础知识: 线段树是一颗二叉树搜索树,也是二叉平衡树。 根区间:[L,R] 左孩子区间:[L, (L+R)/2] 右孩子区间:[(L+R)/2+1, R] 叶子节点:L=R 树高logN 树上的操作都和树高有关系,例如:优先队列,堆等 时间复杂度O(longn) 用法: 区间更新 区间查询 例如区间 ...
分类:
其他好文 时间:
2019-09-04 13:20:03
阅读次数:
85
2019暑假集训7.15-8.23 今年大一下学期整个暑假基本上是了解学习了dp、动态规划、线段树、树状数组、贪心、搜索、背包问题、记忆化搜索、欧拉回路、最大流、最短路、最小生成树、二叉搜索树、kmp、数论、、马拉车等,感觉每天在敲代码,可是整体看下来学的东西很少,但是谢谢题目又是好久才能写出一道题 ...
分类:
其他好文 时间:
2019-09-02 00:15:30
阅读次数:
153
先用中序确定节点的值,再用层次遍历输出即可。 写的时候思维江化,一开始用指针建树。。。 #include <bits/stdc++.h> using namespace std; #define maxn 105 struct Node { int index,left,right; }node[m ...
分类:
其他好文 时间:
2019-09-01 22:05:56
阅读次数:
83
#include < unordered_map > map: map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素。因此,对于map进行的查找,删除,添加等 ...
分类:
其他好文 时间:
2019-09-01 16:27:56
阅读次数:
77
https://leetcode cn.com/problems/unique binary search trees/ 思路:对于n个数,1,2,3,4,,,,i,,,n。以i为节点时,i前面的序列作为左子,i右边的作为右子树。左右子树时有顺序的,因此可以忽略具体值得大小,只需要看序列的个数。假设 ...
分类:
编程语言 时间:
2019-08-30 23:32:24
阅读次数:
264
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: G(0)=G(1)=1; G(n+1)=2(2n+1)G(n)/(n+2) class Solution { public: int numTrees(int n) { long G = 1; for(int i = ...
分类:
编程语言 时间:
2019-08-30 19:17:42
阅读次数:
150