该题本来不是一个具有代表性的题目,其实质就是考了一个对于二叉树的遍历问题,但是由于在面试中我多次被问到该题,所以做一个记录。
题目描述
- 给你一棵二叉树的根节点
root ,翻转这棵二叉树,并返回其根节点。
解法一(DFS)
public TreeNode invertTree1(TreeNode root) {
if (root == null) {
return null;
}
invertTree1(root.left);
invertTree1(root.right);
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
return root;
}
解法二(BFS)
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
LinkedList<TreeNode> queue = new LinkedList<>();
queue.addLast(root);
while (!queue.isEmpty()) {
TreeNode poll = queue.pollFirst();
TreeNode temp = poll.left;
poll.left = poll.right;
poll.right = temp;
if (poll.left != null) {
queue.addLast(poll.left);
}
if (poll.right != null) {
queue.addLast(poll.right);
}
}
return root;
}
|