第四章 解决问题的思路
画图让抽象问题形象化
题目27 二叉树的镜像
题目描述:
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
解题思路:
树的根节点相同,但它们的左右两个子节点交换了位置,交换了根节点后,还需要交换左右子节点
1、先前序遍历这颗树的每个节点,
2、如果遍历到的节点有子节点,就交换它的两个子节点。
3、当交换万所有非子结点的左右字数后,就得到树的镜像
代码实现:
public void MirrorRecursively(TreeNode node) {
if(node==null)
return;
if(node.left==null && node.right==null) {
return;
}
TreeNode temp = node.left;
node.left = node.right;
node.right = temp;
if(node.left!=null)
MirrorRecursively(node.left);
if(node.right!=null)
MirrorRecursively(node.right);
}
考点收获:
- 二叉树的遍历算法
- 通过画图把抽象问题形象化