数据结构
RainyD4y
NULL
展开
-
LeetCode 100 相同的树 题解
题目大意 给定两个二叉树,然后判断是否相同,即结构相同,且对应结点也相同。 分析 利用深搜进行递归判断即可,注意判断边界条件: 1.一个根节点为空,一个根节点不为空,返回false; 2.两个均为空返回true; 源代码 class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { ...原创 2020-01-11 19:32:38 · 129 阅读 · 0 评论 -
LeetCode 98 验证二叉搜索树 题解
题目大意 给定一个树结构,判定这个树是不是二叉搜索树。 分析 首先给出二叉搜索树的定义: 1.节点的左子树只包含小于当前节点的数。 2.节点的右子树只包含大于当前节点的数。 3.所有左子树和右子树自身必须也是二叉搜索树。 这里有几个要点,小于、大于意味着比较的时候等于不能满足条件,之后要求的是左子树所有节点都要小于当前节点,右子树的所有节点都要大于当前节点,这意味着不仅儿子节点要满足...原创 2019-11-17 17:02:09 · 195 阅读 · 0 评论 -
LeetCode 41 缺失的第一个正数 题解
题目大意 给定一个无序的整数数组,然后求最小的没有出现过的正整数,比如给定[1, 3, 4],那么最小的没有出现过的正整数就是2。 分析 这个题目要求的是O(n)的算法,可以学习桶排序的思想(也或者是一种利用下标来做哈希索引的思想)。 首先遍历数组,求出其中的最小与最大的正整数,然后设一个bool数组index来判断某个数是否出现过,要注意的是需要平移一下下标,比如index[i]对应的是...原创 2019-11-17 16:12:59 · 157 阅读 · 0 评论 -
数据结构——堆
堆的定义 1.堆是一种基于完全二叉树的数据结构。 2.完全二叉树 (1) 每个节点最多有两个子节点(二叉); (2) 除了最底层,其他每一层都必须填满,最底层也需要从左到右依次填入数据; 3.当一棵完全二叉树满足下列条件时即称为堆:每个父节点都大于等于(或者小于等于)它的两个子节点。大于等于的情况称为大根堆,小于等于的情况称为小根堆(没有二叉排序树的要求,比如左...原创 2019-11-09 13:31:21 · 932 阅读 · 0 评论 -
LeetCode 215 数组中的第K个最大元素 题解
题目大意 给定一个数组,求它的第K大的元素。 分析 使用堆、二叉排序树、快排之类的都可以,我直接用了C++ STL自带的priority_queue代替手写堆了。 代码 int findKthLargest(vector<int>& nums, int k) { priority_queue<int,vector<int>,less<...原创 2019-11-08 20:59:14 · 114 阅读 · 0 评论