BFS比DFS更好理解「翻转二叉树」
一周没发博客,算法好难!一直在复习前面的,哈希表、链表、二叉树已经够我喝一壶了,不过我一定要啃下来,哪怕慢一点,也不能盲目的追求速度,勤于复习才能将知识变成自己的,复习比学习重要!!
今天复习翻转二叉树的时候吗,发现BFS其实更加适合这道题,因为这道题本身就是以“层”为逻辑去进行的——每层翻转就好了
之前用的DFS递归是真的好恶心555
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
示例 1:
输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]
// BFS解法
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null){
return root;
}
Queue<TreeNode> que = new LinkedList<>();
que.offer(root);
while(!que.isEmpty()){
int size = que.size();
while(size > 0){
TreeNode temp = que.poll();
change(temp);// 翻转方法
if(temp.left != null)que.offer(temp.left);
if(temp.right != null)que.offer(temp.right);
size --;
}
}
return root;
}
public void change(TreeNode node){
TreeNode temp = node.left;
node.left = node.right;
node.right = temp;
}
}