
数据结构:树
记录二叉树,多路查找树,堆等 树相关的数据结构学习过程
z_stand
远离颠倒梦想,究竟涅槃
展开
-
C++的 STL堆 实现获取中位数
前言堆数据结构 使用的是优先级队列实现,创建堆的时候需要指定堆中元素的排列方式,即最大堆或者最小堆最大堆即 堆顶元素为堆中最大的元素最小堆即 堆顶元素为堆中最小堆元素如下为一个最大堆中位数:一组数排序后,如果元素个数如下奇数个数n:(int) n/2 的数偶数个数n: (int) n/2 和(int) n/2 +1的平均数同样此时想要获取一组数列中的中位数,且同样使用时间复...原创 2019-11-03 14:11:05 · 1937 阅读 · 0 评论 -
C++的STL 堆 实现获取数组堆第K大的数
前言堆数据结构 使用的是优先级队列实现,创建堆的时候需要指定堆中元素的排列方式,即最大堆或者最小堆最大堆即 堆顶元素为堆中最大的元素最小堆即 堆顶元素为堆中最小堆元素如下为一个最大堆回到文章标题,获取一个数组中第K大的数,要求时间复杂度是O(n),即一次遍历即可获取到该值。所以普通的先排序,再获取第k个数值的方式显然不满足要求,排序最快的快速排序也需要O(log2 n)这里就是我...原创 2019-11-03 13:41:06 · 1068 阅读 · 0 评论 -
二叉树:二叉搜索树实现 逆序数问题
关于逆序数的问题描述如下:已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数。例如:nums = [5, 2, 6, 1], count = [2, 1, 1, 0];nums = [6, 6, 6, 1, 1, 1], count = [3, 3, 3, 0, 0, 0];nums = [5, -7, 9, 1, 3, 5,...原创 2019-11-17 21:10:38 · 684 阅读 · 0 评论 -
二叉树:二叉搜索树的编码和解码
二叉搜索树的编码和解码描述:编码:即将一个二叉搜索树编码,节点数值转换为字符串解码:即将一个字符串解码,数值转换为对应的二叉搜索树的节点过程导图如下:针对性编码实现如下:/*数字转字符串*/void change_num_to_string(int val, string &tmp) { string buf; while(val) { buf += val % 10...原创 2019-11-17 14:37:56 · 906 阅读 · 0 评论 -
二叉树:二叉搜索树的创建和插入
二叉搜索树又名二叉排序树。大概简略的思维导图如下,方便记忆特性基本二叉搜索树创建过程如下/*数据结构如下*/typedef struct tree{ int data; struct tree *left = NULL; struct tree *right = NULL;}Tree,*TreeNode;/*Node 为二叉树根节点,insert为插入的节点*/void ...原创 2019-11-16 20:42:48 · 960 阅读 · 1 评论 -
二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree
已知二叉树,求二叉树中给定的两个节点的最近公共祖先。 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低(离根最 远),且v,w两个节点都是u的子孙。如上二叉树,6和8号节点的公共祖先有4,1;但是最近的公共祖先仅为4这里我们发现,想要快速获取两个节点的最近的公共祖先节点,首先需要知道两个节点各自从根节点到当前的路径,即:6号节点的路径为:[1,4,6]8号节点的路径为:[1,...原创 2019-11-12 23:29:37 · 209 阅读 · 0 评论 -
二叉树:路径之和 Path Sum
给定一个二叉树与整数sum,找出所有从根节点到叶结点的路径,这些路 径上的节点值累加和为sum即创建一个二叉树,要求二叉树中有一个路径从根节点到叶节点到路径加起来代表到和为 给定的sum如下二叉树给定路径之和为18,则需要输出两条路径:[1,4,5,8][1,4,6,7]同样,这个过程我们可以使用先序深度优先搜索,同时需要使用临时数据结构保存搜索过程中出现的根节点,方便回溯。实现...原创 2019-11-12 23:12:36 · 367 阅读 · 0 评论 -
二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度
文章目录前言创建二叉树先序遍历中序遍历后序遍历获取叶子节点个数获取树的高度测试代码前言现有如下二叉树:关于二叉树的相关操作,我们能够发现二叉树从根节点到子节点,以及每个中间节点基本都能够拆分为若干个子节点的操作,且每个子节点的操作都和其头节点操作一致。所以我们针对二叉树的操作都可以使用分治算+回溯/归并算法进行完整测试代码见文末创建二叉树二叉树数据结构:typedef stru...原创 2019-11-11 21:59:09 · 748 阅读 · 0 评论