剑指offer-25.二叉树的镜像(151)

25.二叉树的镜像(151)

  • 题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。

    • 输入描述:

      二叉树的镜像定义:源二叉树 
          	   8
          	 /   \
          	6     10
            /  \   /  \
           5   7   9  11
          	镜像二叉树
          	    8
          	  /   \
          	 10    6
              /  \  / \
             11  9 7   5
      
package _25.二叉树的镜像;

import java.util.LinkedList;
import java.util.Queue;

public class MirrorOfBTree {
	public void Mirror(TreeNode root) {
		 if (root == null)
		 return;
		 if(root.left == null && root.right == null)
		 return;
		 TreeNode tmp;
		 tmp = root.left;
		 root.left = root.right;
		 root.right = tmp;
		 Mirror(root.left);
		 Mirror(root.right);
	}

	//层序遍历
	public void levelOrder(TreeNode root) {
		Queue<TreeNode> queue = new LinkedList<>();
		queue.offer(root);
		TreeNode node = root;
		while (!queue.isEmpty()) {
			node = queue.poll();
			System.out.print(node.val + " ");
			if (node.left != null) {
				queue.offer(node.left);
			}
			if (node.right != null) {
				queue.offer(node.right);
			}
		}
		System.out.println();
	}

	public static void main(String[] args) {
		TreeNode root = new TreeNode(8);
		root.left = new TreeNode(6);
		root.right = new TreeNode(10);
		root.left.left = new TreeNode(5);
		root.left.right = new TreeNode(7);
		root.right.left = new TreeNode(9);
		root.right.right = new TreeNode(11);
		MirrorOfBTree tree = new MirrorOfBTree();

		tree.levelOrder(root);
		tree.Mirror(root);
		tree.levelOrder(root);
	}
}

class TreeNode {
	int val = 0;
	TreeNode left = null;
	TreeNode right = null;

	public TreeNode(int val) {
		this.val = val;
	}
}
上一篇:LeeCode 数组做题随笔(主要记录做题过程中的一些感悟)


下一篇:AtCoder Beginner Contest 151 E - Max-Min Sums