1.题目
操作给定的二叉树,将其变换为源二叉树的镜像。
要求: 空间复杂度 O(n)O(n) 。本题也有原地操作,即空间复杂度 O(1)O(1) 的解法,时间复杂度 O(n)O(n)
比如:
源二叉树
镜像二叉树
2.解法
2.1 树的结构
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
2.2 解法
左子树是右子树的镜像,右子树是左子树的镜像
如果节点为空则是空,如果节点是叶子节点,则发放返回本节点,如果是子树则会左右交换。
public TreeNode Mirror(TreeNode pRoot) {
// write code here
if(pRoot==null) return null;
TreeNode left = pRoot.left;
pRoot.left = Mirror(pRoot.right);
pRoot.right = Mirror(left);
return pRoot;
}
总结
递归实现镜像。
算法系列在github上有一个开源项目,主要是本系列博客的demo代码。https://github.com/forestnlp/alg
如果您对软件开发、机器学习、深度学习有兴趣请关注本博客,将持续推出Java、软件架构、深度学习相关专栏。
您的支持是对我最大的鼓励。