剑指offer之个人刷题历程记录
二叉树的镜像
题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。) 知识点: 二叉树 解题思路: 我们求得一棵树的镜像的过程:我们先前序遍历这棵树的每个结点,如果遍历到的结点有左右子树,即有左右子结点。则交换它的两个子结点。交换完所有非叶子结点的子结点之后,得到树的镜像。 具体代码:
/** 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 temp=root.left; root.left=root.right; root.right=temp; if(root.left!=null) Mirror(root.left); if(root.right!=null) Mirror(root.right); } }
注意点: 对树的遍历清楚,对递归的过程清楚。