剑指offer:二叉树镜像(递归+循环)

class Solution {
public:
/*递归*/
void Mirror(TreeNode *pRoot) {
    if (pRoot == NULL) return;
    if (pRoot->left == NULL&&pRoot->right == NULL) return;
    TreeNode*tempNode = pRoot->left;
    pRoot->left = pRoot->right;
    pRoot->right = tempNode;
    if (pRoot->left != NULL)
        Mirror(pRoot->left);
    if (pRoot->right != NULL)
        Mirror(pRoot->right);
}
/*循环*/
void Mirror(TreeNode *pRoot) {
if (pRoot == NULL) return;
    if (pRoot->left == NULL&&pRoot->right == NULL) return;        
    stack StackNode;
    StackNode.push(pRoot);
    while (!StackNode.empty())
    {
        pRoot = StackNode.top();
        StackNode.pop();
        TreeNode*tempNode = pRoot->left;
        pRoot->left = pRoot->right;
        pRoot->right = tempNode;
        if (pRoot->left)
            StackNode.push(pRoot->left);
        if (pRoot->right)
            StackNode.push(pRoot->right);
    }
}
};

你可能感兴趣的:(剑指offer)