이진 트리가 주어지면 모든 경로에서 각 노드의 합이 주어진 대상 값과 동일한 경로를 찾으십시오.
유효한 경로는 루트 노드에서 잎 노드까지의 경로를 나타냅니다.
견본
이진 트리가 주어지고 대상 값 = 5 :
1 / / 2 4 / / 2 3
반품:
[[1, 2, 2], [1, 4]]
코드는 다음과 같습니다.
/** * Treenode의 정의 : * 공개 클래스 Treenode { * public int val; * 공공 트린 노드 왼쪽, 오른쪽; * public treenode (int val) { * this.val = val; * this.left = this.right = null; *} *} */public class 솔루션 {/** * @param root 바이너리 트리의 루트 * @param target a integer * @public list */public list */public list */public list */public list */public list */public list */public list */public list */public list */public list */public list <list <integer >> binarytreepathsum (treenode root, int target) {// Herereturn dfs (root, new arraylist <intger> (), 0, New, News. ArrayList <list <integer> (), target);} public list <list <integer >> dfs (treenode root, list <integer> node, int sum, int sum, list <integer >> paths, int target) {if (root == null) {return new arraylist <list <integer >> (); ArrayList <list <integer >> (); if (root.left! = null) {list <integer> nodes = new arraylist <integer> (); if (node! = null) {nodes.addall (node);} nodes.add (root.val); list <integer >> temp = dfs (root.left, 노드, sum+root.val, paths, target); if (temp! = null) {path.addall (temp);}} if (root.right! = null) {list <integer> 노드 = new arraylist <integer> (); if (node! = null) {nodes.addall (node);} nodes.add (root.val); list <list <integer >> temp = dfs (루트, 노드, sum+root.val, paths, target); if (temp! = null) {path.addall (temp);}} if (root.left == null 노드 = new arraylist <integer> (); if (node! = null) {nodes.addall (node);} nodes.add (root.val); if (sum+root.val == target) {path.add (nodes);} else {path = new arraylist <list >> ()}}}}}}}}}}}}참조
Java 프로그래밍에서 이진 트리의 최대 경로 찾기 문제에 대한 코드 분석
Java의 상속 테스트 코드 분석
요약
위의 것은이 기사의 Java Binary Tree Paths 및 Code 예제에 관한 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!