周日经典问题回顾。
今天来回顾一下二叉树,翻转二叉树,绝对是面试题目了,代码不长,又考察对二叉树的操作。
正式因为翻转二叉树代码也很简单,很多同学可以看一下代码就能手撕出来了。
这样就经常会忽略更深层次的东西。
首先使用递归来实现翻转二叉树的时候,前序遍历和后序遍历都可以,唯独中序遍历不行!
因为中序遍历会把某些节点的左右孩子翻转了两次!建议拿纸画一画理解一波。
那么层序遍历可以不可以呢?
可以的!只要把每一个节点的左右孩子翻转一次的遍历方式都是可以的!
此时一道面试题又出来的,面试题就是翻转二叉树。
如果候选人写出递归方法,就问他用的是前中后序哪种方式的遍历,那么另外两种种遍历行不行?为什么?
然后在问,可不可以写出非递归的方式?
如果面试中翻转二叉树的题目这么考,就可以看出候选人对二叉树的理解了。
题目不难,但要到处都是陷阱,到处都是细节,这是大厂面试官最喜欢的面试题目。
文章传送门:二叉树:你真的会翻转二叉树么?
在文章中,我提到的这些细节都做了详细的讲解,看完之后,大家对翻转二叉树会有更深一步的理解。
题目链接:https://leetcode-cn.com/problems/invert-binary-tree/
对于二叉树的题目,解题之前一定要想清楚究竟是前中后序遍历,还是层序遍历。
而不是凭感觉就把代码写出来,在做题的时候,要保持每行代码都是有理有据,这样基本功才扎实。
最后录友们周末愉快!
「代码随想录」期待你的关注!