BM33. 二叉树的镜像
描述
示例1
输入:
{8,6,10,5,7,9,11}
输出:
{8,10,6,11,9,7,5}
说明:
如题面所示示例2
输入:
{}
输出:
{}
C++ 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2021-09-15
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return TreeNode类 */ TreeNode* Mirror(TreeNode* pRoot) { if(!pRoot || (!pRoot->left && !pRoot->right)) return pRoot; else if(pRoot) swap(pRoot->left,pRoot->right); Mirror(pRoot->left); Mirror(pRoot->right); return pRoot; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2021-09-14
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @ param pRoot TreeNode类 * @ return TreeNode类 */ void mirror1(TreeNode* root) {//前序遍历-递归形式 if(!root) return; TreeNode* temp=root->left; root->left =root->right; root->right=temp; mirror1(root->left); mirror1(root->right); return; } TreeNode* Mirror(TreeNode* root) { if (!root) return root; mirror1(root); return root; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2021-03-16
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return TreeNode类 */ TreeNode* Mirror(TreeNode* pRoot) { if(pRoot==nullptr) return NULL; TreeNode* tmp = pRoot->left; pRoot->left = Mirror(pRoot->right); pRoot->right = Mirror(tmp); return pRoot; // write code here } };
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-07-18
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return TreeNode类 */ TreeNode* Mirror(TreeNode* pRoot) { // write code here if(pRoot==NULL)return NULL; TreeNode *temp=pRoot->left; pRoot->left=pRoot->right; pRoot->right=temp; Mirror(pRoot->left); Mirror(pRoot->right); return pRoot; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-07-18
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return TreeNode类 */ TreeNode* Mirror(TreeNode* pRoot) { if(pRoot == NULL) return nullptr; TreeNode* temp; temp = pRoot->left; pRoot->left = pRoot->right; pRoot->right = temp; Mirror(pRoot->left); Mirror(pRoot->right); return pRoot; } };