バイナリツリーや値のパス - 安全プランを証明します

入力バイナリツリーのルートノードと整数、入力パスおよび全ての整数のノードのバイナリプリント値。定義は、リーフノードにツリーダウンのルート・ノードから始まるパスへのパスを形成することにより、ノードを横断してきました。(注:リスト内の戻り値、大きいアレイアレイフロント)

パスを記録するために、ツリーの先行順走査

パブリック クラスソリューション{ 
    ArrayListの <のArrayList <整数>>パス= 新規のArrayList <のArrayList <整数>> (); 
    ArrayList <整数>パス= 新規のArrayList <整数> (); //存储当前的路径
     公共のArrayList <のArrayList <整数>> FindPath(ツリーノードのルート、INT ターゲット){
         場合(目標<0 ){
             リターン  パス。
        } 
        であれば(ルート== NULL ){
             リターンパス。
        } 
        path.add(root.val)。
        もし(root.left == nullを&& root.right == NULL &&ターゲット== root.val){ 
            paths.add(新規のArrayList <整数> (パス))。
        } 
        であれば(root.val <ターゲット&& root.left!= NULL ){ 
            FindPath(root.left、ターゲット - root.val)。
        } 
        であれば(root.val <ターゲット&& root.left!= NULL ){ 
            FindPath(root.right、ターゲット - root.val)。
        } 
//遍历完一条路径之后需要回溯 path.remove(path.size()
-1 )。 リターンパス。 } }

参考ブログ:https://blog.csdn.net/u014525494/article/details/80978647

後にのみ完全に記録などの一部の図で理解

おすすめ

転載: www.cnblogs.com/nlw-blog/p/12430389.html