美文网首页
LeetCode Invert Binary Tree(镜像)

LeetCode Invert Binary Tree(镜像)

作者: codingcyx | 来源:发表于2018-04-15 22:09 被阅读0次

    二叉树的镜像。

    解法一(dfs recursive):

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

    解法二(bfs queue):

    TreeNode* invertTree(TreeNode* root) {
            queue<TreeNode*> que;
            if(root == NULL) return NULL;
            que.push(root);
            while(!que.empty()){
                TreeNode* tmp = que.front();
                que.pop();
                swap(tmp -> left, tmp -> right);
                if(tmp -> left)
                    que.push(tmp -> left);
                if(tmp -> right)
                    que.push(tmp -> right);
            }
            return root;
        }
    

    注:解法二是层序遍历bfs,用队列维护需要处理的结点。也可以把队列换成栈,这样就是dfs,处理方法类似于bfs。区别只在于处理顺序。

    相关文章

      网友评论

          本文标题:LeetCode Invert Binary Tree(镜像)

          本文链接:https://www.haomeiwen.com/subject/agmjkftx.html