力扣226:翻转二叉树

2024-01-26 18:45:40 浏览数 (1)

力扣226:翻转二叉树

给你一棵二叉树的根节点 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 = [] 输出:[]

提示:

树中节点数目范围在 [0, 100] 内 -100 <= Node.val <= 100

分析:

递归思想

将根节点的左孩子和右孩子交换一下即可,交换时需要传递地址到交换函数中,因此需要用二级指针来接收。

当根结点为空时,结束递归,这是递归返回的条件。

AC代码:

代码语言:javascript复制
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

void swap(struct TreeNode**left,struct TreeNode**right)
{
    struct TreeNode*tmp=*left;
    *left=*right;
    *right=tmp;
}

struct TreeNode* invertTree(struct TreeNode* root) {
    if(root==NULL)
        return NULL;
    
    swap(&root->left,&root->right);

    invertTree(root->left);
    invertTree(root->right);

    return root;
}

0 人点赞