Leetcode 226 : 翻转二叉树

2021年3月14日 224Browse 0Like 0Comments

题目描述

翻转一棵二叉树。

示例:


输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9
输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

备注:
这个问题是受到 Max Howell 的 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出>>翻转二叉树这道题,这太糟糕了。
这是永远的嘲讽啊!太狠了

解题思路

运用递归的思想,先将左子树和右子数递归翻转,然后将翻转后的左子树和右子树调换位置。递归出口就是根节点为空或者只有根节点的情况。

示例代码

    TreeNode* invertTree(TreeNode* root) {
        if(root==nullptr) return nullptr;
        if(!root->left&&!root->right) return root;
        TreeNode* left=invertTree(root->left);
        TreeNode* right=invertTree(root->right);
        TreeNode* temp=left;
        root->left=root->right;
        root->right=temp;
        return root;
    }

agedcat_xuanzai

这个人很懒,什么都没留下

Comments