题目标题

输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12和10, 5, 7

难度:中级

python 数据结构
参考解析
  1. class Solution:
  2. def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
  3. res, path = [], []
  4. def recur(root, tar):
  5. if not root: return
  6. path.append(root.val)
  7. tar -= root.val
  8. if tar == 0 and not root.left and not root.right:
  9. res.append(list(path))
  10. recur(root.left, tar)
  11. recur(root.right, tar)
  12. path.pop()
  13. recur(root, sum)
  14. return res

推荐习题

给定数组{a1, a2, a3, ... an},要求挑出一些数,这些数不能相邻,使得加起来的和最大。 字符串翻转 Bert 在各个开源数据集上都做到了 state-of-the-art 的效果, 最近很多 bert的改进版, 你有了解么? 有一个木棍长度为n个单位,上面有若干只蚂蚁。蚂蚁只能沿着它朝左或者朝右走。速度为1个每秒一个单位。如果两只走的方向不同的蚂蚁相遇,则它们都会调头,朝相反方向以同样的速度继续走。给定所有蚂蚁的位置,求最后一只蚂蚁掉下棍子的时间。 数据范围:木棍长度n :正整数 1 <= n <= 10000 每只蚂蚁的位置和走的方向,两个非负整数数组left[], right[] 每个数组长度为[0, n + 1]之间的整数。两个数组长度总和是[1, n + 1]之间的整数,在两个数组里,没有整数重复出现。(位置表示是非负整数[0..n]之间。的同一个位置不会有两只蚂蚁。总体上,至少存在一只蚂蚁。) 例如 输入:n = 4, left = {4,3}, right = {0,1}, 答案是4……自己分析下就好。 ![](https://pupload.chinahadoop.cn/program/20201102/8587d7b20eef5b686539bd2430d3afc7.png) 找一个链表是否有环,如果有环,请找到它的入环节点,要求空间复杂度O(1)。 输出序列的逆序对 跳台阶问题---题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度 输入一颗二元查找树,将该树转换为它的镜像. 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / \ 6 10 /\ /\ 5 7 9 11 输出: 8 / \ 10 6 /\ /\ 11 9 7 5