题目描述

LeetCode——226. 翻转二叉树(BFS)_二叉树

解题思路

BFS是解决这个问题的核心,BFS的初始节点是一个根节点。

  1. 首先将根节点放入数组中。
  2. 取出数组中的首元素,然后交换这个元素的左右节点。
  3. 如果左节点存在,则将左节点加入数组中。
  4. 如果右节点存在,则将右节点加入数组中。

AC代码

var invertTree = function(root) {
// 使用BFS解决翻转二叉树问题
if (!root) return null;
const res = [root];

while (res.length) {
let cur = res.shift();
// 交换左右节点
[cur.left, cur.right] = [cur.right, cur.left];
if (cur.left) {
res.push(cur.left);
}
if (cur.right) {
res.push(cur.right);
}
}
return root;
};

反思

二叉树镜像和反转二叉树是一个题目,总的来说通过BFS可以高效的解决这个问题。