(真的很忙,所以博客记录得非常粗糙,见谅)
文章链接:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html
102. 层序遍历:https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html
226.翻转二叉树:https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html
101. 对称二叉树:https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html
自己看到题目的第一想法:由于之前一些习惯的原因,我绝大多数二叉树的题都只会用迭代的方法算,所以让我直接只用递归做我真的有点不会。。然后不少题都差一点做不出来
看完代码随想录之后的想法:
1. 层序遍历:这里的题我都是用迭代做的…题目太多了也没什么时间看递归的解法…
2. 翻转二叉树:用递归法就是把所有root的左右孩子都换了,然后接下来是invertTree(root.left)和invertTree(root.right),最后base case是当自己是null的时候return个null
3. 对称二叉树:需要创建一个helper函数,因为需要root.left和root.right两个值;代码如下:
public boolean isSymmetric(TreeNode root) {
return helper(root.left, root.right);}
private boolean helper(TreeNode left, TreeNode right) {
if (left ==null && right ==null) {return true;}
if (left ==null || right ==null) {return false;}
if (left.val != right.val) {return false;}
return helper(left.left, right.right) && helper(left.right, right.left);}
自己实现过程中遇到哪些困难:递归好难我好暴躁
今日收获,记录一下自己的学习时长:对递归有了又清晰又不清晰的认知,学习时长6小时