1. 程式人生 > >114. Flatten Binary Tree to Linked List(Tree)

114. Flatten Binary Tree to Linked List(Tree)

連結:https://leetcode.com/problems/flatten-binary-tree-to-linked-list/

題目:將二叉樹序列化為連結串列

思路:
先序遍歷,儲存一個全域性的newroot,對於當前節點root:
暫存左右子節點,然後將newroot->right = root;newroot->left = NULL;newroot = root;

程式碼:

class Solution {
public:
    void pre(TreeNode *root){
         if(!root) return;
        
         TreeNode *l = root->left;
         TreeNode *r = root->right;
        
         if(!newroot){
             newroot = ret = root;
         }
        
         else {
             newroot->right = root;
             newroot->left = NULL;
             newroot = root;
         }
        
        pre(l);
        pre(r);
        
    }
    
    void flatten(TreeNode* root) {
        
         newroot = ret = NULL;
         pre(root);
         root = ret;
    }
    
private:
    TreeNode *newroot;
    TreeNode *ret;
};