LeetCode 114. 二叉树展开为链表

    科技2022-07-15  118

    给定一个二叉树,原地将它展开为一个单链表。   例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 class Solution { public: void flatten(TreeNode* root) { preoder(root); } TreeNode* preoder(TreeNode* root){ // 借助前序遍历完成树的展开 if (root == nullptr) return nullptr; TreeNode* back = root->right; // 备份右子树 TreeNode* backRoot = root; // 备份根节点 root->right = preoder(root->left); root->left = nullptr; // 左子树置空 while(root->right) root = root->right;// 走到左子树展开链表的最后一个非空结点上 root->right = preoder(back); // 将右子树的展开链表接在原有链表的后面 return backRoot; // 返回根节点 } };

     

    Processed: 0.011, SQL: 8