- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
本题中balanced
的定义是
The number of nodes in its left subtree and the number of nodes in its right subtree are almost equal, which means their difference is not greater than one
如果给定一个 n
作为节点的总数,那么这样的树有多少?
另外,如果我们用 height
替换 the number of nodes
会怎样?给定一个高度
,有多少棵高度平衡的树?
最佳答案
好吧,差异只会由最后一层造成,因此您可以找到应该为该层保留多少节点,然后考虑所有可能的组合。有 n
个节点,你知道高度应该是 floor(log(n))
因此同一棵树在深度 k = floor(log(n)) - 1
是完全平衡的,因此您知道它需要 (m = sum(i=0..k)2^i
) 个节点,因此需要 n-m
个节点留给最后一级。平衡二叉树的一些定义强制“所有节点左对齐”,在这种情况下,很明显只有一种可能性,没有这个约束,你有 2^floor(log(n) )
选择 n-m
,因为您必须选择 2^floor(log(n))
可能的插槽中的哪个,您将分配给节点,强制总共要分配的 n-m
个节点。
对于高度故事,您考虑 2^floor(log(n))
的组合总和选择 i
作为 i
来自1 到 2^floor(log(n))
。您考虑在最后一级有 1 个节点的所有可能性,然后是 2 等等,直到您不使它成为完全平衡的二叉树,因此所有 2^floor(log(n))
分配的插槽。
关于algorithm - 给定一个数 n,有多少平衡二叉树(不是二叉搜索树)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931886/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我在使用 fork 和 pipes 制作一个用于学习目的的简单程序时遇到了问题。我想要一个 child 向 parent 发送一些数据,然后这个( parent )再次将它发送给 child 。 结果
我正在制作一个需要同时做 3 件事的 python 脚本。什么是实现此目的的好方法,就像我听说的关于 GIL 的方法一样,我不再那么倾向于使用线程了。 脚本需要做的两件事将非常活跃,他们将有很多工作要
有没有办法运行sshd以便它可以(至少对于有限数量的登录)成功返回提示(可能是 busybox),即使 fork 不可用(例如,PID 不足)? 在我看来,这应该是可能的,例如,sshd 预 fork
我意识到 Bootstrap 将使用 v4 切换到 rem。但是,我使用的是当前版本 (v3),我想使用 rem。 原因?我希望网站上有可以为最终用户缩放字体大小的按钮。我相信最好的实现方式是使用 r
我试图在这个程序中将信息从子进程传递到父进程。这是到目前为止的代码,仍在清理它: #include #include #include #include main() { char *
我试图理解 fork 在 C 中是如何工作的,但我在某个地方误解了一些东西。 我去年遇到了一位教授给我的测试,但我无法回复它:我们有 3 个任务(进程或线程),伪代码如下: Th1 { display
我在使用 fork() 之类的东西时遇到了一些麻烦。 我正在开发一个 shell,用户可以在其中编写将像在普通普通 shell 中一样执行的命令。 我有一个像这样的主要功能: void Shell::
我有一个 Python 主进程,以及由主进程使用 os.fork() 创建的一组或多个 worker . 我需要将大型且相当复杂的数据结构从工作程序传递回主进程。您会为此推荐哪些现有库? 数据结构是列
我对这个 fork 语句很陌生,我不知道 C 程序上的 fork 方法。你能告诉我这段代码的三个可能的输出是什么吗? #include #include int main(void) {
for(i=0;i #include int main() { for(int i=0;i<2;i++) { if(fork()==0) { printf("Hi %d %d
背景 我正在用 C 语言编写一个共享库,与 LD_PRELOAD 动态链接,这意味着拦截和覆盖预加载它的应用程序的网络调用,例如 socket()、connect()、recv()、send()等 在
我是一名优秀的程序员,十分优秀!