假设你有一个像这样的二叉树:
a
/ \
b c
/ \ \
0 0 d
/ \
0 0
Run Code Online (Sandbox Code Playgroud)
其中a、b等是节点并且0为零。树有几种可能的递归遍历:
在孩子之前预购,拜访父母: a b c d
按顺序,在孩子之间访问父母: b a c d
订购后,在孩子之后拜访父母: b d c a
树的“扁平化”仅仅是遍历产生的一个列表;您的数据结构不再是嵌套的,而是扁平的。要展平一棵树,请从一个空的链表开始。然后按照您选择的顺序遍历树,将每个访问过的节点附加到链表中。我认为“可以修改树”意味着您的函数可能会在构建列表时更改树,如果您认为有必要这样做的话。