题目描述:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/ 
解法1:递归
采用后序遍历,对二叉树进行展开操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   | class Solution { public:     void flatten(TreeNode* root) {         if(root==NULL)             return;         flatten(root->left);         flatten(root->right);         if(root->left!=NULL)         {             auto pre=root->left;             while(pre->right!=NULL)             {                 pre=pre->right;             }             pre->right=root->right;             root->right=root->left;             root->left=NULL;         }         return  ;     } };
  | 
 
解法2:非递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   | class Solution { public:     void flatten(TreeNode* root) {           while(root!=NULL)           {               if(root->left!=NULL)               {                   auto pre=root->left;                   while(pre->right!=NULL)                   {                       pre=pre->right;                   }                   pre->right=root->right;                   root->right=root->left;                   root->left=NULL;               }                              root=root->right;           }     } };
  |