二叉树
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);
}
}
}
}