Flatten Binary Tree to Linked List
Flatten a binary tree to a fake "linked list" in pre-order traversal.
Here we use the_right_pointer in TreeNode as the_next_pointer in ListNode.
Example
1
\
1 2
/ \ \
2 5 => 3
/ \ \ \
3 4 6 4
\
5
\
6Traverse Pre-Order
首先来看递归版本的,思路是先利用DFS的思路找到最左子节点,然后回到其父节点,我们需要一个 pointer last来保存父节点,然后
我们需要把右子树临时保存起来,因为把左子树添加到右子树位置时会把原先的右子树覆盖掉。再然后将原左子结点连上父节点的右子节点上,然后再把原右子节点连到新右子节点的右子节点上,然后再回到上一父节点做相同操作。
1
/ \
2 5
/ \ \
3 4 6
1
/ \
2 5
\ \
3 6
\
4
1
\
2
\
3
\
4
\
5
\
6递归后序遍历(Recursive Postorder Traversal)
这里对标准的递归后序遍历稍作改动,由“左-右-根”变更为“右-左-根”,详见代码。
没写完!!!!!
Last updated
Was this helpful?