Leetcode日常記錄:NO.226 反轉二叉樹題解

Wang_Yifan.發表於2020-12-04

題目

翻轉一棵二叉樹。

思路

和反轉有關的問題,我們可以看做一個遞迴問題,不斷更換左右子樹,當從上至下更換到根節點時,返回根節點即可

程式碼

/**
 * 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* invertTree(TreeNode* root) {
        if(ç{
            return root;
        }
        swap(root->left,root->right);
        invertTree(root.left);
        invertTree(root.right);
        return root;
    }
};

問題

這裡面出現了兩個問題

  1. 在二叉樹操作中最好使用xx.left,xx.right對節點進行操作,在遞迴過程中起名會使得名稱重複,出現無法預料的後果;
  2. 這是一個標準的遞迴操作,邊界條件或者說是結束條件即為:(!root),既保證了當樹為空時返回根節點,也保證了遞迴到最深層時可以及時的進行結束遞迴的操作。

相關文章