一、学习总结 1.1、树结构思维导图 1.2、树结构学习体会 树的操作大多通过递归算法实现,而递归算法是我目前还比较难以熟练运用的。 并查集,书中写的理解起来比较难。 在哈夫曼树里,WPL 的值也等于所有非叶子结点值之和,我对于哈夫曼树的构建还不是很熟悉。 线索二叉树还在原来二叉树的根结点上增加了一 ...
分类:
其他好文 时间:
2018-05-05 20:41:21
阅读次数:
217
1.完全二叉树结点的个数 1.问题:给一个完全二叉树的根节点,返回该二叉树的结点数。 2.步骤: 1.计算左子树和右子树的高度,记为h1,h2 2.如果h1=h2,则左子树必满,n+=2^h1-1.计算右子树 3.如果h1>h2,则右子树比满,n+=2^h2-1,计算左子树 4.如果h1=0,则结束 ...
分类:
其他好文 时间:
2018-05-01 20:50:39
阅读次数:
193
最小堆 最小堆是一种完全二叉树,特点是根节点比两个子节点都小(或者根节点比子节点都大) 过程 先找10000个数构建最小堆 依次遍历10亿个数,如果比最小堆的最小值大,则替换这个最小值,并重新构建最小堆 最后输入10000个值 时间复杂度 构建最小堆的复杂度为 logn,求出最大m个数会构建m次最小 ...
分类:
其他好文 时间:
2018-05-01 12:40:12
阅读次数:
184
二叉树按层遍历 判断条件:结点的左右孩子只有4种情况 其中的三种情况有特例 条件1.结点有右孩子,没有左孩子,直接返回false 条件2.结点左右孩子不全(有左没右,左右都没有),则后面遇到的所有结点,都必须是叶节点 只要不违反1.2的,就是完全二叉树 ...
分类:
其他好文 时间:
2018-04-26 01:23:34
阅读次数:
175
已知一棵完全二叉树, 求其节点的个数要求: 时间复杂度低于O(N), N为这棵树的节点个数 结论:满二叉树:高度为L,结点个数 2^L - 1个 先遍历左边界,求出完全二叉树的高度h 然后遍历树的右子树的左边界,看它到没到最后一层, 如果到了最后一层,那么证明它的左子树是满的,高度是h-1 左子树的 ...
分类:
其他好文 时间:
2018-04-26 01:15:36
阅读次数:
167
原创文章,转载请注明出处!博客文章索引地址博客文章中代码的github地址# 预备知识 堆是一种特殊的树形数据结构,即完全二叉树。堆分为大根堆和小根堆,大根堆为根节点的值大于两个子节点的值;小根堆为根节点的值小于两个子节点的值,同时根节点的两个子树也分别是一个堆。 ... ...
分类:
编程语言 时间:
2018-04-07 17:43:51
阅读次数:
256
题目链接 题目大意: 小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0。若小球落到节点为0的则往左落,否则向右落。并且小球会改变它经过的节点,0变1,1变0。给定树的深度D和球的个数I,问第I个小球会最终落到哪个叶子节点。 解题思路: 完全二叉树有一个重要的性质:对于任意一个 ...
分类:
其他好文 时间:
2018-03-31 19:32:57
阅读次数:
143
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始 ...
分类:
其他好文 时间:
2018-03-29 16:06:31
阅读次数:
182
①二叉树的定义:二叉树是由n(n>=0)个结点组成的有限集合,该集合或者为空,或者是由一个根结点加上两颗分别称为左子树和右子树的、互不相交的二叉树组成 ②二叉树的五种不同形态: ③满二叉树(Full Binary Tree):如果二叉树中的所有分支结点的度数都为二,且叶子结点都在同一层上,则称这类二 ...
分类:
其他好文 时间:
2018-03-28 14:11:56
阅读次数:
208
将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种: “x is the root”:x是根结点; “x and y are siblings”:x和y是兄弟结点; “x is the parent of y”:x是y的父结点; “x is a chi ...
分类:
其他好文 时间:
2018-03-28 01:27:27
阅读次数:
168