摘要: 恢复内容开始 首先科普一个事实,对于一个满二叉树来说,节点个数=(1<< (高度))-1。 接下来我们看这道题,管他三七二十一,前面那么多树的遍历,直接搞起,可他丫的还有一个限制条件:时间复杂度小于O(n),那就把这条路堵死了,算了算了,先看图分析一下: 我们仔细观察可以发现,完全二叉树的左右子树必 阅读全文
posted @ 2021-06-26 22:34 吃肉不长肉的小灏哥 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 老规矩,先看定义:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树 在解释:其实就是和堆一样的,一棵树从上到下从左到右必须要完完整整的按顺序来,描述的不太容易理 阅读全文
posted @ 2021-06-26 21:48 吃肉不长肉的小灏哥 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树定义:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 我们来看一下定义:左子树小 阅读全文
posted @ 2021-06-26 21:16 吃肉不长肉的小灏哥 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 平衡二叉树的定义:平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1,我们可以看下图:左边就不是平衡二叉树,因为3的高度为3而5的高度为1,相差大于1。看右边树最大差别3的高度为2,5的高度为1,最大只相差1,所以为平衡二叉树。 那么我们怎么实现呢? 最简单的做法就 阅读全文
posted @ 2021-06-26 17:33 吃肉不长肉的小灏哥 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 我们前面写过二叉树的前序,中序,后续遍历算法,今天聊到的前后置节点就是对于中序遍历来说的顺序前后节点,如下图是按中序遍历顺序1-10的节点: 比如3的前置节点为2,后置节点为4,我们先来看看后置节点的算法思想: 我们都知道中序遍历是按照节点左-父-右顺序遍历的,因此一个节点的后置节点只会有两种情况: 阅读全文
posted @ 2021-06-26 17:05 吃肉不长肉的小灏哥 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 二叉树遍历如下图所示,前序遍历对于1(父),3(左),5(右)这三个节点来说则先1后3,最后5,同理3,4,2这三个也是先父再左再右,那么对于下图来说,前序遍历顺序为1,3,4,5,6,2,7,5,以此类推: 先序遍历:先父,再左,最后右, 中序遍历:先左,再父,最后右 后序遍历:先左,再右,最后父 阅读全文
posted @ 2021-06-24 22:09 吃肉不长肉的小灏哥 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 看到这道题一开始不知道从何入手,做完这道题有一种感受,那就是二维数组的题其实也没有那么难,用二维数组的两个下标控制需要的点移动就可以了。回到这一题,我们使用双指针去操作,如下图所示: a指针向右移动直到移动至4的位置,向下移动,b指针先向下移动直到移动到9的位置向右移动,这样就可以找到对称点,至于如 阅读全文
posted @ 2021-06-17 21:17 吃肉不长肉的小灏哥 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 上篇写到了堆排,其实最主要的是使用数组实现堆结构,那么如何使用数组实现栈,队列呢? 首先我们简单了解栈的数据结构:栈是一种先进后出的结构,如下图可以看到按顺序进入的3->2->5,那么取出的顺序则为5->2->3。 如果使用数组实现,那就需要记住我最新插入的数是哪个,然后倒推取出,代码如下: pub 阅读全文
posted @ 2021-06-07 21:47 吃肉不长肉的小灏哥 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 学习堆排之前先学习一下堆得数据结构,我们常用的一般分为小顶堆和大顶堆,我们以大顶堆为例: 上面从左到右分别是数组,数组转成堆得形式,其实就是一个完全二叉树,而最右边这个可以看到每个节点相对所有子节点来说都是最大的,这就是大顶堆,同理,小顶堆反之(这块不理解的可以看我之前写的一篇文章:https:// 阅读全文
posted @ 2021-06-06 15:31 吃肉不长肉的小灏哥 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 最近准备将算法捡起来,感觉又痛苦又很爽,很多时候一个小细节错了要找半天问题,明明思路对了,但是就是和自己想的有一些差别,我想这是很多小伙伴学习的时候都会有的感受吧(绝对不是我太菜了)。 今天研究了一下快排算法,快排的思路其实也不是很复杂,首先尽量找到数组中一个相对居中的数,然后将大的数放在右边,小的 阅读全文
posted @ 2021-06-05 14:38 吃肉不长肉的小灏哥 阅读(55) 评论(0) 推荐(0) 编辑