원스톱 offer 트리에서 가장 긴 단색 경로

2655 단어 두 갈래 나무
흑백 점으로 이루어진 두 갈래 나무에 대해 우리는 그 중에서 가장 긴 단색 단순 경로를 찾아야 한다. 그 중에서 단순 경로의 정의는 나무의 어떤 점에서 시작하여 나무 가장자리를 따라 반복되지 않는 점에서 나무의 다른 점으로 끝나는 경로이고 경로의 길이는 지나간 점의 수량이다.여기서 우리가 말한 단색 경로는 자연히 한 가지 색깔의 점만 지나는 경로이다.너는 이 나무에서 가장 긴 단색 경로를 찾아야 한다.두 갈래 나무의 루트 노드(나무의 점수는 300보다 작고 O(n)의 복잡도)를 지정하려면 가장 긴 단색 경로의 길이를 되돌려주십시오.이곳의 노드 색깔은 점의 값으로 표시되며, 값이 1인 것은 검은 점이고, 0인 것은 흰 점이다.
int maxLen = 0;

    public int findPath(TreeNode root)
    {
        if (root == null) {
            return 0;
        }
        getPath(root);
        return maxLen;
    }

    public int getPath(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int left = 0;
        int right = 0;
        if (root.left != null) {
            int len = getPath(root.left);
            if (root.val == root.left.val) {
                left = len;
            }
        }
        if (root.right != null) {
            int len = getPath(root.right);
            if (root.val == root.right.val) {
                right = len;
            }
        }
        maxLen = Math.max(maxLen,(left+right+1));
        return Math.max(left,right) + 1;
    }

좋은 웹페이지 즐겨찾기