第一想法肯定是按pre-order traversal traverse 这个BST。但是有很多看不透的东西
首先,怎么搞成linkedlist?? 因为这个Node的定义是没有next pointer的。 而且, 要做in place...
”
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.“
看完hints后, 感觉就是 root 的right pointer指向 flattened left subtree, 指向flattened (root right pointer.)
这里我完全是用recursion的想法。 完全没有去想任何pre-order之类的东西。就是想basic case
假设flatten能够实现我的要求,那么我只要把flatten好的left,接到root.right, 然后本来的flatten好的root.right接到root.left 的leaf.right.
traverse到leaf的这个算法。我感觉我以前刷题的时候应该是学过。不然第一次见估计会懵逼很久。