Учитывая бинарное дерево, найдите путь, в котором сумма каждого узла во всех путях равна данному целевому значению.
Допустимый путь относится к пути от корневого узла до листового узла.
Образец
Учитывая бинарное дерево и целевое значение = 5:
1 / / 2 4 / / 2 3
возвращаться:
[[1, 2, 2], [1, 4]]
Код заключается в следующем:
/** * Определение TreeNode: * Public Class TriEnode { * public int val; * Публичный Тринед слева, справа; * public triEnode (int val) { * this.val = val; * this.left = this.right = null; *} *} */public class solution {/** * @param root корень двоичного дерева * @param target integer * @return Все действительные пути */public list <list <Integer >> binarytreepthsum (root treenode, int target) {// write your cherereturn dfs (root, new arraylist <inteeger>, 0, 0, 0, New New. Arraylist <list <Integer> (), target);} public List <list <Integer >> dfs (root treecode, list <Integer> node, int sum, list <list <Integer >> paths, int target) {if (root == null) {return new ArrayList <integer >> ();} list <integ 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> nodes = new arraylist <Integer> (); {nodes.addall (node);} nodes.add (root.val); list <list <integer >> temp = dfs (root.right, nodes, sum+root.val, paths, target); if (temp! = null) {path.addall (temp);}} if (root.left == null && root = root == null) ArrayList <Integer> (); if (node! = Null) {nodes.addall (node);} nodes.add (root.val); if (sum+root.val == target) {path.add (nodes);} else {path = new ArrayList <список <integer >> ();} return path;ссылка
Анализ кода проблемы поиска максимального пути бинарного дерева в программировании Java
Анализ тестового кода наследования в Java
Суммировать
Выше приведенное дело о джавах бинарных путей деревьев и примеров кода в этой статье, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!