バイナリツリーが与えられた場合、すべてのパスの各ノードの合計が指定されたターゲット値に等しいパスを見つけます。
有効なパスは、ルートノードから葉のノードへのパスを指します。
サンプル
バイナリツリーが与えられ、ターゲット値= 5:
1 / / 2 4 / / 2 3
戻る:
[[1、2、2]、[1、4]]
コードは次のとおりです。
/** * treeNodeの定義: * public class treeNode { * public int val; *パブリックトレニード左、右。 * public treenode(int val){ * this.val = val; * this.left = this.right = null; *} *} */public class solution {/** * @param root binary treeのルート * @paramターゲットのルート * @returnすべての有効なパス */publicリスト<リスト<integer >> binarytreepathsum(treeNode root、int target){// code herereturn dfs(root、new arraylist <integer>) arraylist <list <integer>()、ターゲット);} public list <list <integer >> dfs(list <integer> node、int sum、list <integer >> paths、intターゲット){if(root == null){return new arraylist <integer >>> arrayList <list <integer >>(); if(root.left!= null){list <integer> nodes = new arraylist <integer>(); if(node!= null){nodes.addall(node);} nodes.add(root.val); temp = dfs(root.left、nodes、sum+root.val、paths、ターゲット); if(temp!= null){path.addall(temp);}} if(root.right!= null){list <integer> nodes = new ArrayList <integer>(); if(node!= null) {nodes.addall(node);} nodes.add(root.val); list <list <integer >> temp = dfs(root.right、nodes、sum+root.val、paths、ターゲット); if(temp!= null){path.addall(temp);}}}}}}}} nodes = new arraylist <integer>(); if(node!= null){nodes.addall(node);} nodes.add(root.val); if(sum+root.val ==ターゲット){path.add(nodes);} els {new path = new arraylist <integer>}参照
Javaプログラミングでバイナリツリーの最大パスを見つける問題のコード分析
Javaの継承テストコード分析
要約します
上記は、この記事のJavaバイナリツリーパスとコードの例に関するすべてです。すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!