二叉树的镜像

问题描述:输入一棵树,输出对应的镜像二叉树
二叉树的镜像_第1张图片
递归实现

class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(pRoot==NULL)
            return;
        TreeNode *temp=pRoot->left;
        pRoot->left=pRoot->right;
        pRoot->right=temp;
        Mirror(pRoot->left);
        Mirror(pRoot->right);
    }
};

非递归实现(利用栈实现)


class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(pRoot==NULL)
            return;
        stack<TreeNode*>stack;
        stack.push(pRoot);
        while(stack.size())
        {
            TreeNode *p=stack.top();
            stack.pop();
            if(p->left!=NULL||p->right!=NULL)
            {
                TreeNode *temp=p->left;
                p->left=p->right;
                p->right=temp;
            }
            if(p->left!=NULL)
                stack.push(p->left);
            if(p->right!=NULL)
                stack.push(p->right);
        }
    }
};

你可能感兴趣的:(二叉树的镜像)