2017-03-10 4 views
0

이진 검색 트리의 높이를 반환하는 메서드를 작성했습니다.재귀 : 재귀 함수에서 값 1을 반환하는 방법

이제 재귀 메서드에서 height - 1을 반환하려고합니다. 나는 여분의 if 조건을 추가하여이 작업을 수행하고 있습니다.

재귀 함수에서 value - 1을 반환하는 더 좋은 방법이 있습니까? 베이스의 경우

static int height(Node root) { 
    if (root == null) {  
     return 0; 
    } 

    if (root.left == null && root.right==null) {  
     return 1;    
    } else 
     // I want to return height - 1. 
     // For example if max height is 10, I wanted to return 9. 
     return (1 + Math.max(height(root.left), height(root.right)); 
    } 
} 

답변

3

각각 반환 -1과 0 :

static int height(Node root) { 
    if(root == null)  
     return -1; 
    if(root.left == null && root.right==null)  
     return 0;    
    else 
     return 1+ Math.max(height(root.left), 
        height(root.right)); 
} 

업데이트를 주석에 언급 된 요구 사항을 준수하기 위해 "나는 하나의 노드에 대한 널 (null) 노드 1에 0을 반환하고 싶다면 무엇 다른 모든 경우 높이 -1이면. "

static int funny_height(Node root) { 
    int h = height(node); 
    return h <= 0 ? h + 1 : h; 
} 
+0

널 노드의 경우 0, 단일 노드의 경우 1, 기타 노드의 경우 높이 -1을 반환하고 싶습니다. 예 : 7 원소가 {3,2,1,5,4,6,7} 인 BST의 경우, methid는 4 대신에 3을 반환해야합니다. –

+0

이것은 몇 가지 다른 나무에 대해 1을 제공하기 때문에 다소 일치하지 않습니다. 그러나 정말로 원한다면 업데이트를 참조하십시오. – Henry

+0

감사. 나는 이것을 달성하기 위해 다른 함수를 사용해야한다는 것을 확인하고 싶었고 재귀에서는 불가능했다. 우리는 같은 재귀 함수를 사용하여 이것을 달성 할 수 있다고 생각합니까? –