当前位置: 代码迷 >> 综合 >> leetcode_129:Sum Root to Leaf Numbers
  详细解决方案

leetcode_129:Sum Root to Leaf Numbers

热度:72   发布时间:2023-12-10 22:41:55.0

这个题目一看肯定是递归,关键的问题是如何保存上面已经遍历并计算过的值。所以当我们写递归函数的时候,肯定是有一个参数是上一个已经计算过的值,而有了上一个值,我们就可以计算本层所得到的新值,同时继续向下计算,所以也有一个参数是得到下面的值(左右子节点)。于是我们就得出了这个函数的形状:

    private int helper(int pre, TreeNode tree) {
    if (tree == null)	//如果某一个子节点是空,要返回0return 0;//到了叶子节点,结果应是上一次计算好的值乘10加上当前根节点的值if (tree.left == null && tree.right == null) {
    	return pre * 10 + tree.val;}//否则还没到叶子,则把当前这一层计算的值pre*10+tree.val作为下一层的pre值。return helper(pre*10+tree.val, tree.left) + helper(pre*10+tree.val, tree.right);}

那么主函数只需要调用helper(root.val, root.left) + helper(root.val, root.right)就行了,即把根节点的值作为已经计算好的,然后得到左右子节点。代码如下:

    public int sumNumbers(TreeNode root) {
    if (root == null)	//空树return 0;if (root.left == null && root.right == null)	//只有一个根节点return root.val;return helper(root.val, root.left) + helper(root.val, root.right);}
  相关解决方案