题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
解题方法:遇到复杂问题,可以通过画图、举例等方法,来让自己加深理解。思路往往就在你一步步的分析之中。
思路:遍历这颗树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。交换完所有非叶子结点的左右孩子结点后,就得到了树的镜像。
写递归时的想法;该设置的退出条件设置好,该进行的交换操作写好,当孩子结点不为空的时候,就去递归孩子结点。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
[java]
view plain
copy
public class Solution { public void Mirror(TreeNode root) { if(root == null){ return; } TreeNode value = root.left; root.left = root.right; root.right = value; if(root.left != null){ Mirror(root.left); } if(root.right != null){ Mirror(root.right); } } }