长春个人网站制作公司网站开发用什么语言
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,直接返回nullif (root === null) {return null;}// 交换左右子节点let temp = root.left;root.left = root.right;root.right = temp;// 递归地反转左右子树invertTree(root.left);invertTree(root.right);return root;
};
啦啦啦!轻松解决