题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
在线代码:思路清晰之后,写递归代码很快!
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public void Mirror(TreeNode root) { //分析求一颗树的镜像的过程:我们先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点 //当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。 //前序遍历,先 根--左---右 if(root==null){ return; } if(root.left==null&&root.right==null){ return; } //左右结点交换过程 TreeNode tempnode; tempnode=root.left; root.left=root.right; root.right=tempnode; //继续递归交换 if(root.left!=null){ Mirror(root.left); } if(root.right!=null){ Mirror(root.right); } } }