什么是二叉树中的"NULL指针标记"?

xam*_*mir 1 c# algorithm implementation nodes binary-search-tree

我所经历的这个这个职位约二叉搜索树的实现.

我看到二进制搜索树表示为(例如):

BST

1 5 7 10 40 50

我试图了解相同的序列化或反序列化在这里.博客文章让我疯狂的那些-1他们正在调用NULL指针的标记.他们将树代表为:

BST为-1s

20 8 4 -1 -1 12 10 -1 -1 14 -1 -1 -1

混乱

什么是-1秒?

我的最终目标是使用C#存储和读取某种文件的二进制搜索树,但这种混乱让我失望.

Pet*_*etr 6

这些-1代表了没有更多孩子的地方.

以你为榜样

     20
    /
   8__
  /   \
4      12
       /\
     10  14
Run Code Online (Sandbox Code Playgroud)

您可以想象添加额外的-1(您可以使用树本身不会发生的任何值)到节点没有子节点的位置:

       20
      /   \
     8__   -1
    /   \
  4      12
 /\      /\
-1 -1   10  14
        /\   /\
      -1 -1 -1 -1
Run Code Online (Sandbox Code Playgroud)

现在如果你通过"root,然后左子树,然后右子树"顺序浏览你的树,你将获得以下字符串:

20 8 4 -1 -1 12 10 -1 -1 14 -1 -1 -1
Run Code Online (Sandbox Code Playgroud)

这正是你所拥有的.所以这是一种以数组形式表示树的方法.同时,很容易从该形式重建树.知道这些-1s在某种意义上是特殊的,因为它们没有更多的孩子,你可以从这样的数组中重建树而没有任何歧义.

  • @xameeramir,只是[前四个空格](http://stackoverflow.com/editing-help#code),你想要格式化为代码. (2认同)