入力バイナリツリーのルートノードと整数、入力パスおよび全ての整数のノードのバイナリプリント値。定義は、リーフノードにツリーダウンのルート・ノードから始まるパスへのパスを形成することにより、ノードを横断してきました。(注:リスト内の戻り値、大きいアレイアレイフロント)
パスを記録するために、ツリーの先行順走査
パブリック クラスソリューション{ 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
後にのみ完全に記録などの一部の図で理解