LeetCode-剑指 Offer 27. 二叉树的镜像
生活随笔
收集整理的這篇文章主要介紹了
LeetCode-剑指 Offer 27. 二叉树的镜像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
劍指 Offer 27. 二叉樹的鏡像
思路一:遞歸
從根節點開始,遞歸的對樹進行遍歷,并從葉子節點開始翻轉,得到鏡像。如果當前遍歷到的節點root的左右兩棵子樹都已經翻轉得到了鏡像,那么我們只需要交換兩棵子樹的位置,即可得到以root為跟節點的整顆子樹的鏡像。
/*** 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:TreeNode* mirrorTree(TreeNode* root) {//首先確定遞歸的截至條件,當為空時候直接返回結束遞歸if(root==nullptr) return root;//不為空時候,先左邊深度往下遞歸尋找,再右邊尋找if(root->left!=nullptr) mirrorTree(root->left);if(root->right!=nullptr) mirrorTree(root->right);//找到最后一層,左右節點進行交換TreeNode* tempNode = root->left;root->left = root->right;root->right = tempNode;//返回交換后的結果return root;} };遞歸部分優化代碼
/*** 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:TreeNode* mirrorTree(TreeNode* root) {//首先確定遞歸的截至條件,當為空時候直接返回結束遞歸if(root==nullptr) return nullptr;//不為空時候,先左邊深度往下遞歸尋找,再右邊尋找// if(root->left!=nullptr) mirrorTree(root->left);// if(root->right!=nullptr) mirrorTree(root->right);TreeNode* left = mirrorTree(root->left);TreeNode* right= mirrorTree(root->right);//找到最后一層,左右節點進行交換root->left = right;root->right = left;//返回交換后的結果return root;} };總結
以上是生活随笔為你收集整理的LeetCode-剑指 Offer 27. 二叉树的镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode-剑指 Offer 25
- 下一篇: LeetCode-剑指 Offer 13