在解决问题之前,要先弄懂问题是什么,可以先向面试官阐述自己的思想,有时候可以借助画图的方法来让自己的想法更加直观。

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。

方法:递归调换左右子树
思路:遍历树的每一个结点,如果他的左右子树又一个不为空,那么就调换左右子树。

  • 时间复杂度O(n),n 为树 A 中结点的个数
  • 空间复杂度O(n),递归栈需要空间
public TreeNode mirrorTree(TreeNode root) {
    if (root == null) {
        return root;
    }
    if (root.left != null || root.right != null) {
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
    }
    root.left = mirrorTree(root.left);
    root.right = mirrorTree(root.right);
    return root;
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐