题目:
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
递归:深度优先遍历
迭代:广度优先遍历
方法:迭代
class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
// 将二叉树中的节点逐层放入队列中,再迭代处理队列中的元素
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty()) {
// 每次都从队列中拿一个节点,并交换这个节点的左右子树
TreeNode tmp = queue.poll(); // 返回队首元素的同时删除队首元素
TreeNode left = tmp.left;
tmp.left = tmp.right;
tmp.right = left; // 交换
// 如果当前节点的左子树不为空,则放入队列等待后续处理
if (tmp.left != null)
queue.add(tmp.left);
// 如果当前节点的右子树不为空,则放入队列等待后续处理
if (tmp.right != null)
queue.add(tmp.right);
}
// 返回处理完的根节点
return root;
}
}