【33】二叉树的镜像
2016-11-09 00:00
155 查看
画图是遇到算法问题的一种解题思路。
他可以让抽象问题具体化。有不少数据结构比如二叉树和二维数组以及链表都可以用这种思路来做。
题目:
完成一个函数,输入一颗二叉树,输出它的镜像二叉树类
class BinaryTreeNode{ int mValue; BinaryTreeNode nLeft; BinaryTreeNode mRight; }
思路:
前序遍历,如果不是空,只需要递归的交换子树就可以了如图:
代码:
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); } }