二叉树镜像

3 篇文章 0 订阅

题目

二叉树镜像

方案描述

其实就是从头到尾遍历左右孩子进行替换位置

代码实现

  1. TreeNode类:
/**
 *
 * @author xxx
 * @date 2018/6/21
 */
public class TreeNode {

    private int data;

    private TreeNode leftTreeNode;

    private TreeNode RightTreeNode;

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public TreeNode getLeftTreeNode() {
        return leftTreeNode;
    }

    public void setLeftTreeNode(TreeNode leftTreeNode) {
        this.leftTreeNode = leftTreeNode;
    }

    public TreeNode getRightTreeNode() {
        return RightTreeNode;
    }

    public void setRightTreeNode(TreeNode rightTreeNode) {
        RightTreeNode = rightTreeNode;
    }

    @Override
    public String toString() {
        return "TreeNode{" +
                "data=" + data +
                ", leftTreeNode=" + leftTreeNode +
                ", RightTreeNode=" + RightTreeNode +
                '}';
    }
  1. 镜像方法:
    public static void tranform(TreeNode treeNode){

        if (null == treeNode){
            return;
        }
        TreeNode leftTreeNode = treeNode.getLeftTreeNode();
        TreeNode rightTreeNode = treeNode.getRightTreeNode();
        treeNode.setLeftTreeNode(rightTreeNode);
        treeNode.setRightTreeNode(leftTreeNode);
        if (null != leftTreeNode){
            tranform(leftTreeNode);
        }
        if (null != rightTreeNode){
            tranform(rightTreeNode);
        }
    }
  1. 测试方法:
    public static void main(String[] args) {
        TreeNode treeNode1 = new TreeNode();
        treeNode1.setData(1);
        TreeNode treeNode2 = new TreeNode();
        TreeNode treeNode3 = new TreeNode();
        TreeNode treeNode4 = new TreeNode();
        TreeNode treeNode5 = new TreeNode();
        TreeNode treeNode6 = new TreeNode();
        TreeNode treeNode7 = new TreeNode();
        treeNode2.setData(2);
        treeNode4.setData(4);
        treeNode5.setData(5);
        treeNode6.setData(6);
        treeNode7.setData(7);

        treeNode1.setLeftTreeNode(treeNode2);
        treeNode2.setLeftTreeNode(treeNode3);
        treeNode2.setRightTreeNode(treeNode4);
        treeNode1.setRightTreeNode(treeNode5);
        treeNode5.setLeftTreeNode(treeNode6);
        treeNode5.setRightTreeNode(treeNode7);
        System.out.println(treeNode1);
        tranform(treeNode1);
        System.out.println(treeNode1);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值