小渣渣的算法学习笔记:2018秋招备战
数据结构类算法总结:二叉树
数据结构类算法总结:二叉树
1.题目描述:
操作给定的二叉树,将其变换为源二叉树的镜像
2.代码实现:
public class Solution27 { private static class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public static void main(String[] args) { Solution27 s = new Solution27(); TreeNode t1 = new TreeNode(8); TreeNode t2 = new TreeNode(6); TreeNode t3 = new TreeNode(10); TreeNode t4 = new TreeNode(5); TreeNode t5 = new TreeNode(7); TreeNode t6 = new TreeNode(9); TreeNode t7 = new TreeNode(11); t1.left = t2; t1.right = t3; t2.left = t4; t2.right = t5; t3.left = t6; t3.right = t7; s.mirrorRecursively(t1); s.preOrder(t1); } public void preOrder(TreeNode node) { if (node != null) { System.out.print(node.val + " "); preOrder(node.left); preOrder(node.right); } } public void mirrorRecursively(TreeNode pnode){ if(pnode == null) return; if(pnode.left == null && pnode.right == null) return; //先交换根结点左右结点 TreeNode ptemp = pnode.left; pnode.left = pnode.right; pnode.right = ptemp; //递归交换左子树、右子树 if(pnode.left != null) mirrorRecursively(pnode.left); if(pnode.right != null) mirrorRecursively(pnode.right); } }