LeetCode Invert Binary Tree(镜像)

2018-04-15  本文已影响0人  codingcyx

二叉树的镜像。

解法一(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。区别只在于处理顺序。

上一篇 下一篇

猜你喜欢

热点阅读