Javaは、ルートノードからリーフノードまでの各パスの合計を計算します

タイトル説明

0〜9の数字のみを含む二分木が与えられた場合、ルートノードからリーフノードへの各パスは数字で表すことができます。
たとえば、ルートノードからリーフノードへのパスが1→2→3の場合、このパスは123に置き換えられます。
ルートノードからリーフノードまでのすべてのパスで表される数値の合計を求めます。
例:

このバイナリツリー内の2つの経路が存在する
。から経路1→2
リーフノードにルートノードである番号12で置き換え番号13に置き換えられているリーフノードにルートノードから経路1→3、
そう答えは\ 12 + 13 = 25 12 + 13 = 25

例1

入る

{1,0}

戻り値

10

例2

入る

{1、#、9}

戻り値

19
import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    int resultVal = 0;
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public int sumNumbers (TreeNode root) {
        
        preTree(root);
       
        
        return resultVal;
    }
    
    public void preTree(TreeNode root){
        
        if(root == null){
            return;
        }
        
        if(root.left == null && root.right == null){
            resultVal += root.val;
            return;
        }
        
        if(root.left!=null){
            root.left.val += root.val*10;
        }
        
        if(root.right!=null){
            root.right.val += root.val*10;
        }

        preTree(root.left);
        preTree(root.right);
    }
}

 

おすすめ

転載: blog.csdn.net/luzhensmart/article/details/112966917