首页 > 平衡二叉树
头像 zzugzx
发表于 2020-07-03 12:55:51
题目链接 题意:题解: AC代码初学python,上一手拙劣代码 n, d = map(int,input().split()) f=[0 for i in range(140)] f[1]=1 for i in range(2, n+1): f[i] = 1 + f[i - 1] 展开全文
头像 horz
发表于 2020-07-03 21:56:57
题意 给定和,要求一个二叉树,使得任意节点左右子树深度之差不超过,求左右子树节点差值的最大值。 分析 我们可以使左子树节点个数最多,右子树节点个数最少。 左子树显然是一颗满二叉树。 考虑如何求右子树:首先深度尽量小,为。 我们定义表示深度为的子树最少总节点个数。 则转移方程, 可以理解为左边放了一颗 展开全文
头像 _LRJ_
发表于 2020-07-11 12:22:43
这个题坑点在于和我们一般的BBT不一样。我们说平衡因子一般是要<d。但是这里是<=d。这点要注意。 然后就来分析一下题目。 首先,特判两种情况n=1||n==0输出0就行了 考虑一般情况,画个图发现,如果f[n]表示平衡因子不超过d的最小结点数量。那么f[n]=1+f[n-1]+f[ 展开全文
头像 Severus.
发表于 2020-07-06 16:50:06
题目描述 平衡二叉树,顾名思义就是一棵“平衡”的二叉树。在这道题中,“平衡”的定义为,对于树中任意一个节点,都满足左右子树的高度差不超过 d. 空树的高度定义为0,单个节点的高度为1,其他情况下树的高度定义为根节点左右子树高度最大值 + 1. 一棵在高度上平衡的树,节点数可能不平衡,因此再定义一棵 展开全文
头像 hnust_zhouzisheng
发表于 2020-07-09 12:33:16
递推 要求所有高度为n的平衡树中不平衡度的最大值,没必要考虑所有的树,只要想办法构造出一棵不平衡度最大的树即可。要想不平衡度最大,只要根节点的左右子树节点数差值最大即可。若不选取根节点,则高度上限会减少,得到的树不平衡度不是最大。而要使左右子树节点数差值最大,只要使左子树节点数最大、右子树节点数尽可 展开全文
头像 昵称很长很长真是太好了
发表于 2020-07-11 14:53:19
通过这题发现了double的坑点,本来认为double表示范围可能跟long long差不了多少,在wa了n次之后发现double表示的长度是16位,而2的60次方已经到了18位的长度了,当然不对,所以这题不能图省劲直接用powhan's题解:这题就是让我们算这颗树最不平衡的时候根节点左右子数结点的 展开全文
头像 sunrise__sunrise
发表于 2020-07-09 20:51:36
题目意思 题目规定的还是比较正统的BST,那么就左右子树差值不超过给定的第二个数字,高度为第一个数字 解题思路 直接动态规划是最简单的解法:我们想想假设待求得状态为,代表高度为i的所求节点个数那么就有代表着高度为和得左右子树所求节点个数之和再加上根节点最终就有左子数为满二叉树,右子树为满足题目高度只 展开全文
头像 fuzhiji
发表于 2020-07-03 12:47:37
根据题意,找出左右子树最大差值,这个最大值一定是通过这颗树的根节点的左右子树的差值得到的,对于左子树,我们可以令他为满二叉树,这样的节点数最多,假设深度为n,那么左子树为满二叉树的节点数 ,对于右子树,如果差值要越大,那么节点数尽可能小,我们只要求出高度差为不超过d且深度为n-d-1的平衡树的最少节 展开全文
头像 hnust_yangyanjun
发表于 2020-07-10 12:43:19
题意:在一棵每一个节点的左右子树高度差小于d的n高度的树上,求出节点的左右子树节点差的最大值? 思路:是左子树的节点尽可能多,所以左子树为满二叉树。右子树的节点尽可能少,所以右子树高度为n-d-1。n高度的右子树节点个数=n-1高度的右子树节点个数+(n-d-1)高度的右子树节点个数+1。(将一棵树 展开全文
头像 一衍一
发表于 2020-07-03 19:28:44
题意:平衡二叉树,顾名思义就是一棵“平衡”的二叉树。在这道题中,“平衡”的定义为,对于树中任意一个节点,都满足左右子树的高度差不超过 d. 空树的高度定义为0,单个节点的高度为1,其他情况下树的高度定义为根节点左右子树高度最大值 + 1. 一棵在高度上平衡的树,节点数可能不平衡,因此再定义一棵树的不 展开全文