该问题的日记的第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