且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[LeetCode] Flatten Binary Tree to Linked List

更新时间:2022-03-13 11:26:39

This problem seems to be tricky at first glance. However, if you know Morris traversal, it is just the preorder case of Morris traversal and the code is really short.

 1     void flatten(TreeNode* root) {
 2         TreeNode* curNode = root;
 3         while (curNode) {
 4             if (curNode -> left) {
 5                 TreeNode* predecessor = curNode -> left;
 6                 while (predecessor -> right)
 7                     predecessor = predecessor -> right;
 8                 predecessor -> right = curNode -> right;
 9                 curNode -> right = curNode -> left;
10                 curNode -> left = NULL;
11             }
12             else curNode = curNode -> right;
13         }
14     }

For more about Morris traversal, please visit these solutions: morris-preorder, morris-inorder, morris-postorder.