递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)

  • 问题阐述:操作给定的二叉树,将其变换为源二叉树的镜像
    递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)_第1张图片
  • 解题思路:对于这个问题,可以递归就可以解决,借助一个第三方变量完成左右节点的数字交换就行,这里需要注意的你要掌握二叉树的遍历方式,以及递归的调用。详细的分析看下面的图解说明,希望能通过这个列子讲清楚递归在二叉树问题中的运用。
  • 实现代码
package com.cc.cc_nowcoder_java;

/**
 * @Classname Solution18
 * @Description TODO
 * @Date 2020/5/21 10:54
 * @Created by dreamBreathing
 */
public class Solution18 {
    public void Mirror(TreeNode root) {
        if (root == null){
            return;
        }
        TreeNode tmp =root.left;
        root.left = root.right;
        root.right = tmp;
        Mirror(root.left);
        Mirror(root.right);
    }
}

  • 下面开始图解说明,深入剖析代码的每一步操作
    递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)_第2张图片
    递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)_第3张图片
    递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)_第4张图片
    递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)_第5张图片

  • 下面我还准备了一张每一次函数调用的时序图:
    递归的应用:以二叉树的镜像为例(图解说明,深入剖析每一步)_第6张图片

你可能感兴趣的:(数据结构与算法)