一次AC,前序遍历再重构
/** * 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 preOrder(TreeNode* root,queue<TreeNode*>& nodes) { if(root==NULL) return; else { nodes.push(root); if(root->left!=NULL) preOrder(root->left,nodes); if(root->right!=NULL) preOrder(root->right,nodes); return; } } void flatten(TreeNode* root) { if(root==NULL) return; queue<TreeNode*> nodes; preOrder(root,nodes); TreeNode* preRoot=nodes.front(); nodes.pop(); while(!nodes.empty()) { preRoot->left=NULL; preRoot->right=nodes.front(); preRoot=nodes.front(); nodes.pop(); } preRoot->left=NULL; preRoot->right=NULL; return; } };