algorithm - 二叉树在x轴上的最大投影

标签 algorithm data-structures language-agnostic binary-tree

给定一个坐标平面中的二叉树,其根坐标为 (x,y) 。我们需要找到这棵树在 x 轴上的最大投影。也就是说,基本上我们需要找到这棵树的最大宽度。树也可能是倾斜的。

例子:

    1
   / \
  2   3
 /   / \
4   5   6

宽度 = 5

    1
   / \
  2   3
 /  
4   

宽度 = 4

    1
   / 
  2  
 /   
4   

宽度 = 3

我的逻辑基本上是找到最左边的节点和最右边的节点,然后减去它们的 x 坐标。从根到左子树 x 变为 x-1 并且 y 变为 y+1 并且继续向右子树 x 变为 x+1。找到这两个坐标 xLeft 和 xRight 后,我​​们就可以找到最大宽度。但是我在编码时遇到了麻烦。

谁能告诉我该怎么做?这不是作业问题,而是我在某处读到的编程难题。

最佳答案

这是一个层序遍历问题。当您按级别顺序遍历树时,跟踪最大级别的宽度。完成后,该级别的最左侧节点和最右侧节点将为您提供所需的最终投影。

编辑:

mbeckish:上述解决方案假定问题是关于最大横截面的。但如果不是这种情况,水平顺序仍然有效。除了代码必须在遍历期间同时跟踪 minXmaxX 之外。 minX 会跟踪最左边的节点,maxX 会跟踪最右边的节点。那么答案就是maxX-minX+1

This site有许多文档完善的 bst 遍历代码,您可以修改。

关于algorithm - 二叉树在x轴上的最大投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401415/

相关文章:

java - 用于以下场景的最佳数据结构(如 HashMap /列表等)是什么

perl - 如何访问 XML::Simple 返回的数据结构中的值?

java - 从头开始的链表类与默认链表类?

android - 移动应用中的 CSRF

c - 如何优化分配固定红利?

algorithm - 树中从根到叶子的预期最大路径长度

javascript - 查找并验证二维矩阵的给定源节点的直接邻居?

区域体积的 Python 数值积分

language-agnostic - 并发和并行性有什么区别?

language-agnostic - 发送包含图片的 HTML 邮件的正确方法 : Use Server or Embedded images?