在坐标平面上给定一棵二叉树,其根节点具有坐标(x,y)。我们需要找到这棵树在x轴上的最大投影。也就是说,基本上我们需要找到这棵树的最大宽度。该树也可能是倾斜的。
示例:
1
/ \
2 3
/ / \
4 5 6
Width = 5
1
/ \
2 3
/
4
宽度 = 4
1
/
2
/
4
宽度 = 3
我的想法是找到最左边的节点和最右边的节点,然后将它们的x坐标相减。当从根节点向左子树移动时,x
变为x-1
,y
变为y+1
,而当向右子树移动时,x
变为x+1
。找到这两个坐标xLeft
和xRight
后,我们可以找到最大的宽度。但我在编码时遇到了困难。
有人能告诉我如何解决吗?这不是一个作业问题,但它是我在某个地方读到的编程谜题。
width=5
的?你是说4的x坐标是0
,6的x坐标是5
吗?因为实际上宽度应该是4,因为2 - -2 = 4
。请提供更多细节。 - Konsol Labapen