思路
需要注意的就是它的节点编号是从1开始的,Node的l和r是int类型,而不是Node类型,因为题目在给定l和r的时候,给的是下标而不是一个node对象,其余的就没有了,树的遍历这个贼简单
代码
import java.util.*;
class Node{int l,r;public Node(int l,int r){this.l=l;this.r=r;}}
public class Main{static int len;static int[] weights;static long sum = 0l;static Node[] node;public static void dfs(int root,int value){if(root==-1)return;if(value==0)sum+=weights[root];if(node[root].l!=-1)dfs(node[root].l,value+1);if(node[root].r!=-1)dfs(node[root].r,value-1);}public static void main(String[] args) {Scanner s = new Scanner(System.in);len = s.nextInt();weights =new int[len+1];node = new Node[len+1];for(int i=1;i<=len;i++)weights[i]=s.nextInt();for(int i=1;i<=len;i++){int l = s.nextInt();int r = s.nextInt();node[i] = new Node(l,r);}dfs(1,0);System.out.println(sum);s.close();}
}