java数据结构与算法之翻转二叉树
Posted wen-pan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数据结构与算法之翻转二叉树相关的知识,希望对你有一定的参考价值。
该题本来不是一个具有代表性的题目,其实质就是考了一个对于二叉树的遍历问题,但是由于在面试中我多次被问到该题,所以做一个记录。
题目描述
- 给你一棵二叉树的根节点
root
,翻转这棵二叉树,并返回其根节点。
解法一(DFS)
/**
* 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)
/**
* 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;
以上是关于java数据结构与算法之翻转二叉树的主要内容,如果未能解决你的问题,请参考以下文章