![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
lxi__
这个作者很懒,什么都没留下…
展开
-
红黑树
一、概念与性质: 红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。从根到叶子的最长的可能路径不多于最短的可能路径的两倍长,因而近似平衡,在实际运用中比AVL树性能高红黑树的性质:1 结点是红色或黑色。 2 根结点是黑色。 3 每个叶子结点(NULL结点)是黑...原创 2018-03-13 22:37:22 · 112 阅读 · 0 评论 -
牛客/LeetCode——二叉树的对称和翻转
1、判断二叉树是否镜像对称从根开始,先判断其左右孩子,如果都不存在则为true 如果只有一个为空或者两个指向的val值不同则为false当根的左右孩子节点相同时,再判断其左孩子的左孩子和右孩子的右孩子 左孩子的右孩子和右孩子的左孩子 1 ...原创 2018-08-19 21:03:32 · 431 阅读 · 0 评论 -
寻找二叉树的中序遍历的下一个节点
给定一个二叉树和其中一个节点,请找出中序遍历的下一个节点,并且返回此处分为两种情况: /*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *father; TreeLinkNode...原创 2018-08-13 23:52:41 · 1135 阅读 · 0 评论 -
链表相加Add the two numbers and return it as a linked list.
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link...原创 2018-08-09 18:15:04 · 146 阅读 · 0 评论 -
求两个链表的第一个公共节点
求两个链表的第一个公共节点就是求两链表的交点 用两个指针分别指向两个链表的头,用两个循环找到节点相等的/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {pu...原创 2018-08-04 09:05:08 · 121 阅读 · 0 评论 -
niuke_求字符串中的最长数字串
读入一个字符串str,输出字符串str中的连续最长的数字串在一行内输出str中连续最长的数字串。 输入:abcd12345ed125ss123456789 输出:1234567891、先将字符串中的所有数字串存在一个vector< string> v中,即v中所有元素都是str中的数字串 2、比较v中的元素,找出最长的字符串,返回这里用到了getline:获取stri...原创 2018-07-22 16:44:38 · 176 阅读 · 0 评论 -
牛客——将二叉搜索树转换成一个排序的双向链表
//将一个二叉搜索树转换成一个排序的双向链表, //不能创建新节点,只能调整指针指向这里会用到二叉搜索树的中序遍历,#include<stack>struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) ...原创 2018-06-09 11:35:31 · 207 阅读 · 0 评论 -
堆
#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;#include<vector>template <class T>class Heap{public: Heap(T* array, size_t size) :_size(size) { _array.r原创 2018-02-02 12:49:54 · 125 阅读 · 0 评论 -
插入排序/选择排序/希尔排序
1、直接插入排序: 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,基本操作: 将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第...原创 2018-05-20 09:31:39 · 233 阅读 · 0 评论 -
AVL树
AVL树是一种平衡树——当向树中插入新节点后,可以保证每个节点的做右子树高度之差的绝对值不超过1,这样可以避免二叉搜索树的单只退化问题,降低树的高度,从而减少平均搜索长度一、AVL树的概念: 一颗非空的AVL树具有以下特点:它的左右子树都是AVL树左子树和右子树的高度之差(平衡因子)的绝对值不超过1原创 2018-05-06 22:46:06 · 147 阅读 · 0 评论 -
B—树
二叉搜索树、平衡二叉树、红黑树都是动态查找树,典型的二叉搜索结构,查找的时间复杂度和树的高度相关 数据杂乱无规律——线性搜索 O(n) 数据有序——二分查找(最差情况下退化成单只树) O(n) 二叉搜索树 / AVL树 / 红黑树—— O(log2n)1、B树的性质: 一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树,深度为m。它或者是空树,或者是...原创 2018-04-30 19:20:35 · 121 阅读 · 0 评论 -
牛客/LeetCode——二叉树的剪枝
二叉树的剪枝 给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。 返回移除了所有不包含 1 的子树的原二叉树。 class Solution {public: TreeNode* pruneTree(TreeNode* root) { if(root==NULL) return root; ...原创 2018-08-19 21:25:34 · 407 阅读 · 0 评论