题目
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
题解
这道题利用二叉树的层次遍历是非常简单的,利用二叉树的层次遍历,然后交换每个父节点的左右子树就能得出镜像了。
代码
using System;
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}*/
class Solution
{
public TreeNode Mirror(TreeNode root)
{
// write code here
if(root==null)
return null;
if(root.left==null && root.right==null)
{
return root;
}
TreeNode node;
TreeNode left;
TreeNode right;
Queue<TreeNode> q = new Queue<TreeNode>();
q.Enqueue(root);
while(q.Count>0)
{
node=q.Dequeue();
left=node.left;
right=node.right;
node.left=right;
node.right=left;
if(left!=null)
q.Enqueue(left);
if(right!=null)
q.Enqueue(right);
}
return root;
}
}