Algorithm 如何计算预排序树数组中节点的深度?

Algorithm 如何计算预排序树数组中节点的深度?,algorithm,tree,traversal,Algorithm,Tree,Traversal,例如,一棵树 2 / \ 1 3 / \ / \ null n n null 以数组的形式预先存储:[2,1,null,null,3,null,null]。如何计算节点的深度?或者如何将预顺序转换为深度优先?仅考虑预顺序遍历,这是不可能的。以你为例: [2,1,null,null,3,null,null] 重建树有几种可能的解决方案。这里有两个: 2

例如,一棵树

             2
           /   \
          1     3
         / \   / \
       null n n   null

以数组的形式预先存储:[2,1,null,null,3,null,null]。如何计算节点的深度?或者如何将预顺序转换为深度优先?

仅考虑预顺序遍历,这是不可能的。以你为例:

[2,1,null,null,3,null,null]

重建树有几种可能的解决方案。这里有两个:

         2
       /   \
      1     3
     / \   / \
   null n n   null

         2
       /   \
      1     3
     /     / \
   null   n   null
   /
 null

要重建树,您还需要后期排序。然后,您可以按照解决方案的下一个链接进行操作:

如果这是一个二叉树,您只需要遍历数组。可以根据数组中元素的索引确定元素的左、右子级索引。