112. Path Sum
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
1 | For example: |
题意:
给定一个二叉树和一个和,确定树是否有根节点到叶节点的路径,这样路径上元素累加和等于给定的和。
思路:
方法一:
递归的遍历二叉树,当遇到叶子节点(!root->left && !root->right)时,说明找到一条路径,存储路径节点值,把所有路径都找出来,然后相加比较,时间复杂度高,但是此处的递归查找路径上的元素的方法值得学习。
1 | class Solution { |
方法二:
递归过程中直接判断,遍历从根到叶子的每一条路径,并求和。只要相等,就返回true,否则一直遍历下去,最后返回false。与方法一的区别就是不用再记录路径元素,而是直接遍历的过程中求和比较。
1 | class Solution { |
方法三:
思路同方法二,但是不是通过累加树节点到叶节点求和,而是每层递归的时候,把和减去当前层节点值,然后进入下一层,如果sum减到叶节点的时候,等于叶节点的值,则存在目标和为sum的路径,否则没有,这种目标值反向相减再比较的思路值得学习。
1 | class Solution4 { |