翻转二叉树

题目

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
示例 2:

输入:root = [2,1,3]
输出:[2,3,1]
示例 3:

输入:root = []
输出:[]

思路

采用前序遍历的方法,把中左右的中,换成swap(cur->left,cur->right);就可以了,这样的话每一个递归的时候就是交换两个节点了

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    //使用前序遍历的方法
    void invert(TreeNode* cur){
        if(cur==NULL){
            return;
        }
        swap<TreeNode*>(cur->left,cur->right);
        invert(cur->left);
        invert(cur->right);
    }
    TreeNode* invertTree(TreeNode* root) {
        invert(root);
        return root;
    }
};
/*
如果你要是用中序遍历的话那么应该对左子树操作两次就对了
*/
class Solution {
public:
    //使用前序遍历的方法,如果采用的是中序遍历的话,那么会进行两次一样的操作
    void invert(TreeNode* cur){
        if(cur==NULL){
            return;
        }
        invert(cur->left);
        swap<TreeNode*>(cur->left,cur->right);
        invert(cur->left);
    }
    TreeNode* invertTree(TreeNode* root) {
        invert(root);
        return root;
    }
};
posted @ 2023-03-13 18:21  铜锣湾陈昊男  阅读(4)  评论(0)    收藏  举报