Flatten Binary Tree to Linked List

Flatten Binary Tree to Linked List_第1张图片

第一想法肯定是按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的这个算法。我感觉我以前刷题的时候应该是学过。不然第一次见估计会懵逼很久。

Flatten Binary Tree to Linked List_第2张图片

你可能感兴趣的:(Flatten Binary Tree to Linked List)