我是说用Java实现一个树型结构里面有个值根据子节点的值赋值给父节点
时间: 2023-11-27 15:53:23 浏览: 80
好的,实现一个树型结构并赋值可以分为以下几个步骤:
1.定义节点类:节点类包含该节点的值和子节点列表。
```java
public class Node<T> {
private T value;
private List<Node<T>> children;
public Node(T value) {
this.value = value;
this.children = new ArrayList<>();
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public List<Node<T>> getChildren() {
return children;
}
public void addChild(Node<T> child) {
children.add(child);
}
}
```
2.构建树:构建树需要根据树的结构,递归地创建节点并添加子节点。
```java
public class Tree<T> {
private Node<T> root;
public Tree(T rootValue) {
this.root = new Node<>(rootValue);
}
public Node<T> getRoot() {
return root;
}
public void setRoot(Node<T> root) {
this.root = root;
}
public void addNode(Node<T> parent, Node<T> child) {
parent.addChild(child);
}
public void setValue(Node<T> node) {
if (node.getChildren().isEmpty()) {
return;
}
T value = node.getChildren().get(0).getValue();
for (int i = 1; i < node.getChildren().size(); i++) {
T childValue = node.getChildren().get(i).getValue();
if (childValue != null) {
value = childValue;
break;
}
}
node.setValue(value);
for (Node<T> child : node.getChildren()) {
setValue(child);
}
}
}
```
3.测试代码:
```java
public static void main(String[] args) {
Tree<Integer> tree = new Tree<>(1);
Node<Integer> node2 = new Node<>(null);
Node<Integer> node3 = new Node<>(3);
Node<Integer> node4 = new Node<>(null);
Node<Integer> node5 = new Node<>(5);
Node<Integer> node6 = new Node<>(null);
Node<Integer> node7 = new Node<>(null);
Node<Integer> node8 = new Node<>(8);
tree.addNode(tree.getRoot(), node2);
tree.addNode(tree.getRoot(), node3);
tree.addNode(node2, node4);
tree.addNode(node2, node5);
tree.addNode(node4, node6);
tree.addNode(node4, node7);
tree.addNode(node5, node8);
tree.setValue(tree.getRoot());
System.out.println(tree.getRoot().getValue());
}
```
输出结果为:5
以上就是用Java实现树型结构并赋值的过程。
阅读全文