代码随想录算法训练营第十五天| 二叉树02

(真的很忙,所以博客记录得非常粗糙,见谅)

文章链接: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小时

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容