在计算机科学中,二叉树是每个节点最多只有两个分支的树结构。
顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。
上述为快速排序递归实现的主框架,发现与二叉树前序遍历规则非常像,同学们在写递归框架时可想想二叉树前序遍历规则即可快速写出来,后序只需分析如何按照基准值来对区间中...
设完全二叉树有h层,满二叉树的结点为2^h-1个,因为满二叉树最后一层是满的,所以当完全二叉树是满二叉树时,结点数最多;当最后一层只有一个结点时,结点数最少,即...
二叉树遍历是按照某种特定的规则,依次对二叉树中的结点进行相应的操作,并且每个结点只操作一次。
堆是完全二叉树,满二叉树也是完全二叉树,这里使用满二叉树来证明(时间复杂度看的是近似值):
二叉树是数据结构中的核心内容,掌握好二叉树对于理解更复杂的数据结构和算法至关重要。建议读者在学习理论的同时,多动手实现代码,解决实际问题,才能真正掌握二叉树的精...
前言:在之前的C语言刷题集中我们刷了很多IO类型的基础编程题,但是随着数据结构往后的学习以及企业面试的要求,我们还需要对接口型的题目进行练习,博主在这里准备了新...
前言:在前面的学习中,我们实现了顺序表和链表,栈和队列以及二叉树。通过这些知识的学习和实现我们的代码能力也有了一定的提升。那么我们从这篇博客就继续接着上一篇博客...
假设一个二叉树有 a 个度为2的节点, b 个度为1的节点, c 个叶节点,则这个二叉树的边数是
前言: 这篇博客将会和大家一起实现一下二叉树中的层序遍历以及判断一个二叉树是否为完全二叉树的代码实现,其中会引入队列这个数据结构的使用,中间有些需要修改的地方会...
前言: 通过前面几篇博客我们已经完成了前中后序的接口实现,我们现在开始需要进行其它二叉树常用方法的实现,比如二叉树节点个数,叶子节点个数等。还是和之前一样分部分...
前言:在前面我们结束了实现顺序结构的二叉树以及Top-K问题的解决。那么接下来就是实现链式结构二叉树,链接结构的二叉树,没有完全二叉树和堆那样的性质,所以我们后...
前言: 在前面我们完成了堆这个数据结构的代码实现以及堆排序的思想和实现,那么在堆排序中我们采用了一种向下建堆的思想,但其实我们也是可以向上建堆的。在今天这篇博客...
前言:在上篇博客中我们了解了树和二叉树的一些知识点。那么我们今天这篇博客主要是来带大家实现一下堆(一种特殊的二叉树) ,还是和之前一样,我们先分几个部分来实现,...
完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的...
对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。
翻转可以理解为树的左右子树交换,从根到叶子节点,但是这里交换的是链接的指针,而不是单纯的交换值,当出现nullptr时,也是可以交换链接的,交换值的话就不行了。