当前位置: 首页 > 网络应用技术

[问题的日记] 1022.二进制数量的总和

时间:2023-03-06 22:39:39 网络应用技术

  该问题的日记的第50个,扣除是:从根到叶子的二进制数的总和,简单

  这是二进制树的另一个问题。关于二进制树的问题相对简单。只要您想了解,就很容易做到这一点。

  该主题相对清楚,也就是说,让我们找到从标题给出的二进制树到根节点到每个叶子节点的路径,然后查看所有路径

  略有不同的是每条路径。我们需要将节点在路径上组装成101010的二进制形式进行计算。

  显然,显然需要二进制树的遍历,因此我们知道有3种遍历二进制树的递归遍历的方法。

  当然,我们使用哪种方式可以由不同的逻辑所需的路由组装,然后我们可以随意选择一个路由,并以邮政 - 订单遍历为例。

  您可以看到图片中二进制树的第一条路径,1,0,0

  那么,我们如何将这三个节点组装成100个节点?

  实际上,这也很清楚

  然后在横穿第二条道路时是相同的,并且可以组装成101 = 5

  然后,当我们计算结果时,不难认为整个树的链接是左树的链接和链接以及左树的链接。

  然后有sum(root)= sum(root.left) + sum(root.richt)

  根据上述逻辑和分析,我们可以转化为以下代码

  编码时,我们需要注意遍历,当我们遍历第一个节点时,默认值为0,并且第一个节点的值可以直接分配给值

  编码如下:

  从这个角度来看,时间复杂性为o(n),因为我们需要遍历n个节点,并且空间复杂性也为o(n)。这里不需要奇怪。尽管我们没有手动打开O(n)的职业空间,但我们是手动打开的,但是我们可以做到,但是我们是手动打开的,但是我们是手动打开的。如果您使用递归,您需要消耗堆栈空间,因此时间很复杂,时间为O(n)

  原始地址:1022。

  今天在这里。如果有偏差,请询问斧头

  朋友,您的支持和鼓励是我坚持的动力

  好吧,这次在这里

  技术是开放的,我们的心态应该是开放的。改变太阳的变化,并努力向前迈进。

  我有点魔鬼,尼兹(Nezha),欢迎喜欢这个系列,下次再见?

  原始:https://juejin.cn/post/7103550735169617928