Java 剑指offer

xiaoxiao2021-02-27  475

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。

解题方法:遇到复杂问题,可以通过画图、举例等方法,来让自己加深理解。思路往往就在你一步步的分析之中。

思路:遍历这颗树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。交换完所有非叶子结点的左右孩子结点后,就得到了树的镜像。

写递归时的想法;该设置的退出条件设置好,该进行的交换操作写好,当孩子结点不为空的时候,就去递归孩子结点。

输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 [java]  view plain  copy /**  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;        }        TreeNode value = root.left;        root.left = root.right;        root.right = value;        if(root.left != null){            Mirror(root.left);        }        if(root.right != null){            Mirror(root.right);        }       }   }  

转载请注明原文地址: https://www.6miu.com/read-977.html

最新回复(0)