27. 二叉树的镜像
27. 二叉树的镜像
题目
给定一棵二叉树的根节点 root
,请左右翻转这棵二叉树,并返回其根节点。
示例 1:
输入:root = [5,7,9,8,3,2,4]
输出:[5,9,7,4,2,3,8]
提示:
- 树中节点数目范围在
[0, 100]
内 -100 <= Node.val <= 100
注意
本题与 LeetCode 第 226 题 相同。
解题思路
可以递归遍历(dfs)二叉树,交换每个节点的左右子节点,即可生成二叉树的镜像。
- 终止条件: 当节点
root
为空时(即越过叶节点),则返回null
; - 初始化节点
temp
,用于暂存root
的左子节点; - 递归右子节点
mirrorTree(root.right)
,并将返回值作为root
的左子节点 。 - 递归左子节点
mirrorTree(temp)
,并将返回值作为root
的右子节点 。 - 返回当前节点
root
;
代码
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var mirrorTree = function (root) {
if (!root) return null;
let temp = root.left;
root.left = mirrorTree(root.right);
root.right = mirrorTree(temp);
return root;
};