【33】二叉树的镜像

画图是遇到算法问题的一种解题思路。

他可以让抽象问题具体化。
有不少数据结构比如二叉树和二维数组以及链表都可以用这种思路来做。

题目:

完成一个函数,输入一颗二叉树,输出它的镜像

二叉树类

class BinaryTreeNode{
    int mValue;
    BinaryTreeNode nLeft;
    BinaryTreeNode mRight;
}

思路:

  • 前序遍历,如果不是空,只需要递归的交换子树就可以了

如图:

【33】二叉树的镜像_第1张图片

代码:

void mirrorTree(BinaryTreeNode pNode){
        if(pNode == null || (pNode.mLeft == null && pNode.mRight == null)){
            return;
        }
        BinaryTreeNode tmp = pNode.mLeft;
        pNode.mLeft = pNode.mRight;
        pNode.mRight = tmp;
        if(pNode.mLeft != null){
            mirrorTree(pNode.mLeft);
        }
        if(pNode.mRight != null){
            mirrorTree(pNode.mRight);
        }
    }

安利一个面试题汇总的微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号名称:IT面试题汇总

微信订阅号二维码如下:

【33】二叉树的镜像_第2张图片

你可能感兴趣的:(数据结构,算法,面试,镜像,二叉树)