[snap]company tree

import java.util.List;
import java.util.Stack;

public class Solution {
    class PersonNode{
        int val;
        List<PersonNode> people;
        
        PersonNode(int val){
            this.val = val;
        }
    }
    
    // 0 for choose, 1 for not
    public int[] helper(PersonNode root){
        int[] res = new int[2];
        if(root.people.size() == 0){
            res[0] = root.val;
            return res;
        }
        
        res[0] = root.val;
        for(PersonNode ps : root.people){
            int[] psRes = helper(ps);
            res[0] += psRes[1];
            res[1] += Math.max(psRes[0],psRes[1]);
        }
        
        return res;
    }
    
    
    public int companyTree(PersonNode root){
        int[] res = helper(root);
        return Math.max(res[0],res[1]);
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容