二叉树顶视图的歧义

Gil*_*oot 7 binary-tree data-structures

二叉树的顶视图究竟是什么?

我从我找到的文章中发现了很大的歧义和缺乏清晰度。

例如,这是用于演示geeksforgeeks上的顶视图的内容

       1
    /     \
   2       3
  /  \    / \
 4    5  6   7

Run Code Online (Sandbox Code Playgroud)

他们继续说顶视图是 4 2 1 3 7。这里的问题是他们对不是顶视图的东西留下了很多猜测。因此,在代码中实现变得模棱两可。

到目前为止,Stackoverflow示例也好不到哪里去Hackerrank的例子更糟。

所以我希望有人能明确地告诉我顶视图是什么,因为我一直试图找出 2 天。例如,这棵树的顶视图是什么:

      1
       \
        14
       /  \
      3    15
     / \
    2   7
       /  \
      4     13
     / \   /
    5   6 10
         /  \
        8    11
         \    \
          9    12

Run Code Online (Sandbox Code Playgroud)

如果我可以大胆地问,为什么这很重要?

小智 2

现在要了解顶视图的定义,最好的方法是知道如何找到树的顶视图。

寻找顶视图是两种遍历的组合,即->水平顺序遍历和垂直遍历(还有其他方法,但这是最基本的)。

为了可视化这一点,开始在树中绘制垂直线,在第二个示例中,将绘制 6 条垂直线覆盖节点,1st -> 2,5 || 第二 -> 1,3,4 || 第三 -> 14,7,6,8 || 第四 -> 15,13,​​10,9 || 5 号 -> 11 || 6th -> 12。现在遍历这些垂直线的引线,这将给出树 2->1->14->15->11->12 的顶视图。

这就像你的眼睛盯着树的顶部并开始绘制直线,直线在接触任何其他节点之前首先切割的节点是树的俯视图。

就像 hackerrank 上的所有其他问题一样,它有助于强化您的基本概念,找到顶视图可以帮助您详细了解级别顺序遍历和垂直遍历概念。