Even Odd Tree

Even Odd Tree

 

Account Login - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

- 문제 내용 : tree node를 주고 해당 tree의 depth에 따라서 형제간에 값이 다음 룰을 따른다

  • 양수 Depth : 음수로 이루어져 있고 오름차순 정렬이다.
  • 음수 Depth : 양수로 이루어져 있고 내림 차순 정렬이다.

- 접근 방법

BFS를 통해서 처리 하면된다.

var isEvenOddTree = function(root) {
    let depth = 0;
    let queue = new Array();
    queue.push(root);
    
    while(queue.length){
        let size = queue.length;
        let tmpArray = new Array();
        
        for(let i = 0; i < size; i++){
            let node = queue.shift();
            
            if(node != null) {
                tmpArray.push(node.val);
                queue.push(node.left);
                queue.push(node.right);
            }
        }
        
        if(tmpArray.length === 0) break;
        
        if(depth%2){ //odd 
            if(!oddCheck(tmpArray)) return false;
        } else { //even
            if(!evenCheck(tmpArray)) return false;
        }
        
        depth++;
    }
    
    return true;
    
    
    function evenCheck(arr){ //홀수여야함
        let value = arr[0];
        if(value % 2 === 0) return false;
        
        for(let i = 1; i < arr.length; i++){
            if(!(value < arr[i] && arr[i] % 2)) return false;
            value = arr[i];
        }
        
        return true;
    }
    
    function oddCheck(arr){ //짝수여야함
        let value = arr[0];
        if(value % 2 !== 0) return false;
        
        for(let i = 1; i < arr.length; i++){
            if(!(value > arr[i] && (arr[i] % 2) === 0)) return false;
            value = arr[i];
        }
        
        return true;
    }
    
    
};
728x90
반응형