力扣算法ing(36 / 100)
3.23 226.翻转二叉树
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
示例 1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
示例 2:
输入:root = [2,1,3]
输出:[2,3,1]
示例 3:
输入:root = []
输出:[]
提示:
- 树中节点数目范围在
[0, 100]
内 -100 <= Node.val <= 100
我的思路:
子翻转,根没有翻转
先根遍历
if(head.left && head.right)
有孩子的时候
temp
temp = head.left
head.left = head.right
head.right = temp
我的代码:
function invertTree(root: TreeNode | null): TreeNode | null {
if (root.left === null && root.right === null) {
return root;
}
// 交换左右子节点
let temp = root.left;
root.left = root.right;
root.right = temp;
// 递归地反转左右子树
invertTree(root.left);
invertTree(root.right);
return root;
};
执行出错!!!
原因:如果root为null,直接调用root.left或root.right会导致类型错误,因为null没有这些属性。
//如果根节点为null,直接返回null
//if (root === null) {
//return null;
//}
最后代码:
function invertTree(root: TreeNode | null): TreeNode | null {
// 如果根节点为null,直接返回null
if (root === null) {
return null;
}
// 交换左右子节点
let temp = root.left;
root.left = root.right;
root.right = temp;
// 递归地反转左右子树
invertTree(root.left);
invertTree(root.right);
return root;
};
啦啦啦!轻松解决