二叉树
import java.util.ArrayList;
import java.util.List;
public class Test05 {
public static void main(String[] args) {
Node node4 = new Node(4, null, null);
Node node5 = new Node(7, null, null);
Node node2 = new Node(1, node4, node5);
Node node3 = new Node(2, null, null);
Node node1 = new Node(3, node2, node3);
Test05 tsr = new Test05();
System.out.println(tsr.check(node1, 8));
}
static class Node {
//本节点的值
int value;
//左侧叶子节点,如果没有则为null
Node left;
//右侧叶子节点,如果没有则为null
Node right;
public Node(int value, Node left, Node right) {
this.value = value;
this.left = left;
this.right = right;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
}
boolean check(Node root, int sum) {
List<Integer> sumList = new ArrayList<>();
int i = 0;
sumReturn(root, i, sumList);
System.out.println(sumList);
if (sumList.contains(sum)) {
return true;
}else {
return false;
}
}
private void sumReturn(Node root, int i, List<Integer> sumList) {
i = i + root.value;
if (root.left == null && root.right == null) {
sumList.add(i);
} else {
if (root.left != null) {
sumReturn(root.left, i, sumList);
}
if (root.right != null) {
sumReturn(root.right, i, sumList);
}
}
}
}
本文介绍了一个基于Java实现的二叉树路径求和算法,通过递归遍历二叉树的所有路径并检查是否存在等于指定值的路径和。文章详细展示了如何构建二叉树节点,实现递归算法,并最终判断是否存在目标路径和。
36万+

被折叠的 条评论
为什么被折叠?



