问题描述:
输入一颗二元查找树,将该树转换为它的镜像树,即对每一个节点,互换左右子树。
例如输入:
6
/ \
4 12
/ \ / \
2 5 8 16
输出:
6
/ \
12 4
/ \ / \
16 8 5 2
分析:
定义二叉查找树节点:
class BSTreeNode{
BSTreeNode(int x, BSTreeNode lt, BSTreeNode rt){
value = x;
left = lt;
right = rt;
}
int value;
BSTreeNode left;
BSTreeNode right;
}
代码实现:
public void mirrorChange(){
mirrorChange(root);
}
public void mirrorChange(BSTreeNode n){
if(n == null){
return;
}
if(n.left != null){
mirrorChange(n.left);
}
if(n.right != null){
mirrorChange(n.right);
}
BSTreeNode tmp = n.left;
n.left = n.right;
n.right = tmp;
}