0

展平数据:当给定节点的二叉树时,如何编写返回节点链表的递归函数?(树可以修改)

在这个问题中,扁平化树是什么意思?我们是否需要将二叉树的所有元素及其左右指针保存在一个列表中,或者还有另一个我没有得到的问题?

其次(树可以修改)他们是否意味着乐趣应该能够处理树的任何修改以及构建?

4

2 回答 2

5

假设你有一个像这样的二叉树:

    a
   / \
  b   c
 / \   \
0   0   d
       / \
      0   0

其中a,b等是节点并且0为零。树有几种可能的递归遍历

  • 预订,在孩子之前拜访父母:a b c d

  • 按顺序,在孩子之间拜访父母:b a c d

  • 订购后,在孩子之后拜访父母:b d c a

树的“扁平化”仅仅是遍历产生的列表;您的数据结构不再是嵌套的,而是扁平的。要展平一棵树,请从一个空的链表开始。然后按照您选择的顺序遍历树,将每个访问过的节点附加到链表中。我认为“可以修改树”意味着您的函数可以在构建列表时更改树,如果您认为有必要这样做的话。

于 2012-08-09T01:09:04.497 回答
2

扁平化只是意味着他们希望节点按线性顺序排列。树有几种常见的顺序:前序、中序或后序,其中父节点分别出现在其子节点之前、中间或之后。

于 2012-08-09T01:08:02.823 回答