7.13 第一次得看题解
7.14 用自己的套路可以 A 出来!15号再做一下吧!
7.15 还是能 A 得出来。
7.16 一次 AC
题目描述
原题链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/
解题思路
K 神题解:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/
下面是我自己用先序遍历二叉树总结出来的套路写的代码,和 K 神的不太一样!
5~7行是对二叉树的根节点做什么:交换根节点左右俩子节点的位置,但要记得暂存左子节点的值然后传给右子节点,不然先序遍历不了。
至于第9行和第10行的返回值:由于本方法最后返回的是本节点,根据题目要求最后要返回根节点,这没毛病,回溯到最上层后确实就是返回本节点也就是根节点了。但是第9行和第10行的方法也有返回值,那要用啥去接呢?这个时候就想返回的节点相对于本节点是什么角色?很明显,第9行返回的节点是本节点的左子节点,那用本节点的左指针去接准没错!第10行的同理。其实这里只是起到了接值的作用,并没有其它太大的用途!
7.16 思路:
拿到题目首先就可以确定只需要同时遍历一颗二叉树就行,直接套先序遍历的模板就行了,关键在于“要对当前节点做什么”很简单:就是交换左右子节点的位置就行了。
class Solution {public TreeNode mirrorTree(TreeNode root) {if(root == null) return root;TreeNode tmp = root.left;root.left = root.right;root.right = tmp;root.left = mirrorTree(root.left);root.right = mirrorTree(root.right);return root;}}
