2013-03-07 2 views
-1

나는 이진 트리의 깊이를 찾는 방법을 알고있다. 그러나 나는 그것을 어떤 나무에서도 작동하도록 일반화 할 수 없다.트리의 최대 깊이 찾기

트리의 깊이 (반드시 이진 트리가 아님)를 찾기위한 의사 코드를 윤곽을 잡을 수 있습니까?

+1

실제로 할 수 있습니다. 하지만 전에 최소한으로 해봐야한다고 생각하지 않아? – Maroun

답변

7
int findDepthOfTree(tree): 
    int deepest = 0; 
    for (child of root node) 
     deepest = max(deepest, findDepthOfTree(child)) 
    return deepest + 1 
1

자바 구현은 K 진 트리의 깊이를 확인하는 방법은 다음과 같습니다

static int findDepth(Node root) { 
    int deepest = 0; 
    if (root.children != null) { 
     for (Node child : root.children) { 
      deepest = Math.max(deepest, findDepth(child)); 
     } 
    } 
    return deepest+1; 
} 

이 나타내는 노드의 목록에 대한 참조뿐만 아니라 데이터 요소를 HAVA하기 위해 구현 된 다음 노드 클래스를 가정 그것의 아이들. 다음과 같이 될 수 있습니다.

class Node { 
    int data; 
    List<Node> children; 

    public Node (int data, List<Node> children) { 
     this.data = data; 
     this.children = children; 
    } 
    public Node (int data) { 
     this.data = data; 
     this.children = null; 
    } 
}