
二叉树
文章平均质量分 77
二叉树
Alice-柯
程序媛
展开
-
【C++】二叉堆和优先队列
堆(Heap)是计算机科学中一类特殊的数据结构,通常是一棵完全二叉树(每个结点只有不超过两个子结点,只有最下边一层从右开始不缺少或连续缺少一段结点,其它层都是满的的树形结构)。堆的性质有:将根结点最大的堆叫做大根堆,根结点最小的堆叫做小根堆。常见的堆有二叉堆、斐波那契堆等。左是小根堆,右是大根堆:堆的定义如下:nnn 个元素的序列 A1,A2……Ai{A_1,A_2……A_i}A1,A2……Ai当且仅当满足下关系时,称之为堆。Ai≤A2i,Ai≤A2i+1A_i\leq A_{2i},A_i\原创 2022-07-05 15:03:54 · 368 阅读 · 0 评论 -
【C++】根据遍历确定二叉树
已知中序遍历和先序遍历可以唯一确定一棵二叉树,因为根结点是先序遍历的第一个结点,我们只要在中序遍历中找到根结点的位置,就能划分左右子树。然后递归地处理左右子树,就能唯一构建一棵二叉树。同理已知中序遍历和后序遍历也能唯一确定一棵二叉树。但是已知先序遍历和后序遍历不能唯一确定一棵二叉树,反例如下:左右两棵树的先序遍历都为,后序遍历都为,但不相同。已知先序遍历和中序遍历求二叉树的方法如下设先序遍历71432657 1 4 3 2 6 57143265中序遍历为13427561 3 4 2 7 5原创 2022-07-05 14:31:30 · 492 阅读 · 0 评论 -
【C++】二叉树
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。二叉树可以为空树,通常子树被称为”左子树“和”右子树“比如下图就是一棵二叉树二叉树的每个节点最多有两棵子树(不存在度大于2的节点),二叉树的子树有左右之分,次序不能颠倒二叉树的第i层,最多有2i−12^{i-1}2i−1个结点深度为k的二叉树,最多有2k−12^k-12k−1个结点对于任何一颗二叉树,如果其叶结点数为n0n0n0,度为2的节点数为n2n2n2,则n0=n2+1n0=n2+1n0=n2+1对于最后一个结论可以这么理解,当我们原创 2022-07-04 14:59:29 · 541 阅读 · 0 评论