本文参考自《剑指offer》一书,代码采用Java语言。
题目
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
思路
画图可以很清晰地得到思路:先前序遍历,对每个结点交换左右子结点。
测试算例
1.功能测试(普通二叉树;左斜树;右斜树;一个结点)
2.特殊测试(根结点为null;)
Java代码
//题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
public class MirrorOfBinaryTree {
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public void Mirror(TreeNode root) {
if(root==null)
return;
//左右子结点交换
TreeNode tempNode = root.left;
root.left=root.right;
root.right=tempNode;
Mirror(root.left);
Mirror(root.right);
}
}
收获
画图使抽象问题形象化,面试时要在编程前先用画图、举例子等来解释思路。