Leetcode226. 翻转二叉树

翻转一棵二叉树。

示例:

输入:

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

输出:

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

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

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

 递归版:

    TreeNode* invertTree(TreeNode* root) {
        if (root == NULL)
            return NULL;
        auto tmp = root->left;
        root->left = invertTree(root->right);
        root->right = invertTree(tmp);
        return root;
    }

非递归版:利用队列完成

    TreeNode* invertTree(TreeNode* root) {
        if(root == nullptr) {
            return nullptr;
        }
        queue<TreeNode*> que;
        que.push(root);
        while(que.size())
        {
            TreeNode* cur = que.front();
            que.pop();
            TreeNode* temp = cur->right;
            cur->right = cur->left;
            cur->left = temp;
            if(cur->left)
                que.push(cur->left);
            if(cur->right)
                que.push(cur->right);
        }
        return root;
    }

猜你喜欢

转载自blog.csdn.net/hlk09/article/details/81258118
今日推荐