LeetCode 113. Path Sum II
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
意思是找出从根结点到某叶结点的和等于sum,并记录这些路径在数组里。
我的思路是,利用栈来深度优先遍历二叉树,将这个遍历路径记录在一个数组temp里,另外还需要一个变量t来保存temp中路径的和,每当便利到某一结点,使当前和等于sum,且该结点是叶结点,就说明已经找到一条合法的路径了。
有1个难点在于:如果到了某处叶结点但路径和不等于sum,我们通过栈很容易知道下一个要查看的二叉树的位置,但是该怎么修改数组中temp中的路径呢?
也很简单,每对一个结点完成操作时,不必急于将其从栈中取出,而是修改其值为INT_MIN,下一次如果从栈里遇到这样的结点,说明这个结点已经被操作过了且该结点不会是下一条需要找出的路径中的结点,这是就从栈中取出,对应地删除temp中最后那个值,路径的和也减去那个值,就ok了。