题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
比如: 源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
示例1
输入
{8,6,10,5,7,9,11}
返回值
{8,10,6,11,9,7,5}
题目分析
当节点A为空或左右孩子为空时,直接返回该节点,若A不为空,则A.left = A右孩子的镜像,A.right = A左孩子的镜像。
public class Solution {
public TreeNode Mirror (TreeNode pRoot) {
if(pRoot == null) {
return null;
}
if(pRoot.left == null && pRoot.right == null) {
return pRoot;
}
//注意这里要想把保存根节点的左孩子
TreeNode temp = pRoot.left;
pRoot.left = Mirror(pRoot.right);
pRoot.right = Mirror(temp);
return pRoot;
}
}
时间复杂度为o(n),n为树的节点个数。
空间复杂度最大是当树退化成链表,空间复杂度为O(n),n为节点个数。