JS中的二进制树编码挑战:反转二进制树

277 阅读2分钟

树的反转

本周的问题涉及到我们之前讲过的一个数据结构--树。请访问之前的文章了解更多关于二叉树的知识,并在JavaScript中自己实现一个二叉树的功能!一棵树由相互连接的节点组成,主要关系是父节点和子节点。二叉树在计算机科学中非常流行,它是一种父节点最多可以有2个子节点的情况。但也会有三元或四元树更合适的情况。需要记住的是,树是一种具有父子关系的数据结构。

现实生活中的编码挑战和问题一般都围绕着有效地遍历这些树。如果你不熟悉一些常见的图形遍历技术DFS(深度优先搜索)和BFS(广度优先搜索),我建议你使用这个资源来复习。

倒置二叉树

这是一个经典的问题,"给定一个根,反转相应的二叉树并返回根。

我们想要的结果可以在下图中看到。

对于这个解决方案,我将通过连接节点来创建一个二叉树。然后我将创建一个'print'函数,它也会遍历我们的树,并返回一个节点值的数组。最后,我将创建一个invert函数,该函数将承载对我们的树进行反转的逻辑。

medium.com/media/37eb4…

我们问题的解决方案就是我们的反转函数。它采用了一种递归DFS的方法,在上溯的过程中,先向下遍历树的各个层次,然后再执行交换。这个问题的设置占用了我们代码中的大部分行数,但现在你可以通过将其保存在文件中或实现你自己的类来重复使用这些代码

当上述代码段在你的本地机器上运行时,输出结果应该如下所示。

预期的输出

谢谢你这周花时间和我一起解决这个问题在接下来的几周里,我还会介绍更多的树形遍历问题。


二叉树编码挑战:反转二叉树》最初发表在《Nerd For Tech》杂志上,人们通过强调和回应这个故事来继续对话。