二叉树的镜像输出
1:题目描述
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
4
/ \
2 7
/ \ / \
1 3 6 9
镜像输出:
4
/ \
7 2
/ \ / \
9 6 3 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2:题目分析
首先遇到问题,第一件事就是分析问题!!!!不要提前自己先下注意判断这个题目难不难,只有当自己认真分析后,才知道!这到题目经过分析,可以很简单的到结论九十;通过将所有节点的左右子树交换的方式可以的到镜像二叉树,观察问题,分析问题,提炼问题也是一种能力的体现,不是光做题!
算法思路;
- 按照二叉树的前序遍历的方式,遍历所有节点。
- 交换该节点的左右子树,然后对该子树的左右节点进行递归调用本方法,
- return root
迭代方法的设计三要素:
- 本次迭代的终止条件;本节点为null
- 本次迭代的终止条件下的处理;return 即可
- 如果不终止,则迭代逻辑;交换本节点的左右子树,然后进入本节点的子节点进行迭代!!!
3:代码示例
class Solution { //递归线序遍历的方式,来进行左右子树的换位。 public TreeNode mirrorTree(TreeNode root) { if(root == null){ return root; } //左右子树交换 TreeNode temp = root.left; root.left = root.right ; //左右子树递归 root.right = temp ; mirrorTree(root.left); mirrorTree(root.right); return root; } }