思路:遞歸,將左子樹變成單鏈表形式,再將右子樹變成單鏈表形式,最後將左子樹單鏈表的末端鏈接到右子樹單鏈表表頭,將根節點的左孩子置空spa
void flatten(TreeNode* root) { if (root==nullptr) return; flatten(root->left); // 將左子樹變成單鏈表形式 flatten(root->right); // 將右子樹變成單鏈表形式 if (root->left) // 將左子樹單鏈表的末端鏈接到右子樹單鏈表表頭 { TreeNode* p=root->left; while(p->right) p=p->right; p->right=root->right; root->right=root->left; root->left=nullptr; } }