(M)DFS:114. Flatten Binary Tree to Linked List

来源:互联网 发布:美工能自己学吗 编辑:程序博客网 时间:2024/06/04 00:36

这道题的意思是,把一个二叉树展开成一个链。

参考了大神的做法:

把左子树展开成链,把右子树展开成链,然后让右子树变成展开后的左子树,遍历到树的最下端,把展开成的右子树加在这个最下端。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    void flatten(TreeNode* root) {        if(root == NULL)    return;        if(root->left)  flatten(root->left);        if(root->right) flatten(root->right);        TreeNode *tmp = root->right;        root->right = root->left;        root->left = NULL;        while(root->right != NULL)            root = root->right;        root->right = tmp;    }};