zoukankan      html  css  js  c++  java
  • 【LeetCode】226. 翻转二叉树

    题目

    翻转一棵二叉树。

    示例:

    输入:

         4
       /   
      2     7
     /    / 
    1   3 6   9
    

    输出:

         4
       /   
      7     2
     /    / 
    9   6 3   1
    

    本题同【剑指Offer】面试题27. 二叉树的镜像

    思路一:递归

    代码

    时间复杂度:O(n)
    空间复杂度:O(n)

    class Solution {
    public:
        TreeNode* invertTree(TreeNode* root) {
            if (root) {
                TreeNode *node = root->left;
                root->left = root->right;
                root->right = node;
                root->left = invertTree(root->left);
                root->right = invertTree(root->right);
            }       
            return root;
        }
    }
    

    思路二:迭代

    类似深度优先。

    代码

    时间复杂度:O(n)
    空间复杂度:O(n)

    class Solution {
    public:
        TreeNode* invertTree(TreeNode* root) {
            if (!root) {
                return root;
            }
            queue<TreeNode*> q;
            q.push(root);
            while (!q.empty()) {
                TreeNode *node = q.front();            
                TreeNode *tmp = node->left;
                node->left = node->right;
                node->right = tmp;
                q.pop();
                if (node->left) {
                    q.push(node->left);
                }
                if (node->right) {
                    q.push(node->right);
                }
            }
            return root;
        }
    };
    
  • 相关阅读:
    网页中的JavaScript
    css颜色表示
    css文本属性
    css2选择器
    css3选择器
    Canvas练习
    Canvas
    CSS样式之语法
    css基础1
    php操作成功返回当前页并刷新
  • 原文地址:https://www.cnblogs.com/galaxy-hao/p/12354929.html
Copyright © 2011-2022 走看看