迭代法+递归法

二叉树的镜像

http://www.nowcoder.com/questionTerminal/a9d0ecbacef9410ca97463e4a5c83be7

class Solution {
public:
    TreeNode* Mirror(TreeNode* pRoot) {
        if(!pRoot) return nullptr;
        //使用一个stack
        stack<TreeNode*> stackTreeNode;
        stackTreeNode.push(pRoot);

        while(!stackTreeNode.empty()){
            TreeNode* pNode=stackTreeNode.top();
            stackTreeNode.pop();

            TreeNode* pTmp=pNode->left;
            pNode->left=pNode->right;
            pNode->right=pTmp;

            if(pNode->left)
                stackTreeNode.push(pNode->left);
            if(pNode->right)
                stackTreeNode.push(pNode->right);       
        }
        return pRoot;
    }
};
class Solution {
public:
    TreeNode* Mirror(TreeNode* pRoot) {
        if(!pRoot) return nullptr;
        if(!pRoot->left && !pRoot->right) return pRoot; 

        TreeNode* pTmp=pRoot->left;
        pRoot->left=pRoot->right;
        pRoot->right=pTmp;

        if(pRoot->left) Mirror(pRoot->left);
        if(pRoot->right) Mirror(pRoot->right);

        return pRoot;
    }
};
全部评论

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务