算法题001 -- [二叉树的镜像] by java

程序运行截图:
在这里插入图片描述

import java.util.HashMap;

public class Algorithm1 {
	/*
    [二叉树的镜像]
    
    [题目]
    操作给定的二叉树,将其变换为源二叉树的镜像。
    二叉树的镜像定义:
    源二叉树
    8
    | |
    6 10
    | | | |
    5 7 9 11
    镜像二叉树
    8
    | |
    10 6
    | | | |
    11 9 7 5
*/
	private static boolean printRoot = true;

	public static void main(String[] args) {
		TreeNode test = createTestTree();
		printTree(test, false);
		swapTreeNodeChild(test);
		System.out.println("---------------------------");
		printTree(test, false);
	}

	public static TreeNode createTestTree() {
		TreeNode node5 = new TreeNode(2, 5, null, null);
		TreeNode node7 = new TreeNode(2, 7, null, null);
		TreeNode node9 = new TreeNode(2, 9, null, null);
		TreeNode node11 = new TreeNode(2, 11, null, null);
		TreeNode node6 = new TreeNode(1, 6, node5, node7);
		TreeNode node10 = new TreeNode(1, 10, node9, node11);
		TreeNode node8 = new TreeNode(0, 8, node6, node10);
		return node8;
	}

	public static void swapTreeNodeChild(TreeNode node) {
		if (node != null) {
			TreeNode temp = node.leftNode;
			node.leftNode = node.rightNode;
			node.rightNode = temp;
			swapTreeNodeChild(node.leftNode);
			swapTreeNodeChild(node.rightNode);
		}
	}

	public static void printTree(TreeNode node, boolean isLeftNode) {
		HashMap<Integer, StringBuilder> map = new HashMap<>();
		mapTreeNode(node, map);
		for(Integer i : map.keySet()) {
			System.out.println(map.get(i).toString()+"\n");
		}
	}

	public static void mapTreeNode(TreeNode node, HashMap<Integer, StringBuilder> map) {
		if (node != null) {
			StringBuilder sb = map.get(node.depth);
			if (sb == null)
				sb = new StringBuilder();
			sb.append(node.content+" ");
			map.put(node.depth, sb);
			mapTreeNode(node.leftNode, map);
			mapTreeNode(node.rightNode, map);
		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值