BM33. [二叉树的镜像]
https://www.nowcoder.com/exam/oj?tab=%E7%AE%97%E6%B3%95%E7%AF%87&topicId=295
BM33. 二叉树的镜像
源二叉树
镜像二叉树
从上到下进行遍历,然后交换左右子节点就可以了?简单dfs即可
图解过程
模板处理
public TreeNode Mirror (TreeNode pRoot) { //处理当前节点 Mirror(pRoot.left); Mirror(pRoot.right); return pRoot; }
如何处理当前节点,就是交换左右子树,直接时候用我们的swap函数即可
if(pRoot == null) return null; //可以将其抽象为一个swap操作按照swap的操作就非常的容易理解交换可以想象交换数组的连个树 TreeNode tmp = pRoot.right; pRoot.right = pRoot.left; pRoot.left = tmp;
完整题解
public class Solution { public TreeNode Mirror (TreeNode pRoot) { if(pRoot == null) return null; //可以将其抽象为一个swap操作按照swap的操作就非常的容易理解 TreeNode tmp = pRoot.right; pRoot.right = pRoot.left; pRoot.left = tmp; Mirror(pRoot.left); Mirror(pRoot.right); return pRoot; } }
复杂度分析
- 时间复杂度:O(n),二叉树前序遍历的时间复杂度
- 空间复杂度:O(n),新建一个二叉树进行返回