题目汇总

以下链接均为我博客内对应博文,有解题思路和代码,不定时更新补充。

目前范围:Leetcode前150题

生成二叉树

遍历二叉树

前中后三种序列,递归都是一样的理解。迭代的话,前后两个可以互相理解。中序需要单独理解。当然我认为可能我还没有理解透彻。

这三题都是层序遍历,没有什么特别大的区别。层序遍历基本都这样,举一反三。

  • Path Sum
    给定一个数和一棵树,求能否有一条路径上所有叶子结点数值加起来等于给定的数
    递归

  • Path Sum II
    将根到叶子的路径和为sum的路径都枚举出来。
    递归

第二题只不过是第一题得所有可能性保存到一个数组去。

其他题目

上面两题类似

二叉树总结

  • leetcode的测试集经常会有[], [0],所以很多题目先要考虑判断是否为空,return None或者return []。

  • 递归和迭代
    递归中必有迭代,迭代未必用到递归
    (递归(浪费资源反复调用函数)> 迭代)
    迭代——《明日边缘》
    递归——《盗梦空间》
    递归是一个树结构,每个分支都探究到最远,发现无法继续的时候往回走,每个节点只会访问一次
    迭代是一个环结构,每次迭代都是一个圈,不会拉掉其中的某一步,然后不断循环,每个节点都会被循环访问

  • 二叉树在python中用法
    root.val是该节点的值。
    root则相当于指向该节点的指针。
    root.left, root.right指向其左右节点的位置