题目:
给你一棵二叉树的根节点 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;}
}