이것은 바이너리 트리의 일반적인 작업입니다. 요약:
다음과 같이 노드의 데이터 구조를 설정하겠습니다.
다음과 같이 코드 코드를 복사하십시오.
클래스 트린 노드 {
숯 가치;
Treenode Left = NULL;
Treenode right = null;
Treenode (char _val) {
this.val = _val;
}
}
1. 이진 나무 깊이
이것은 재구성 될 수 있고 왼쪽 하위 트리의 깊이가 발견되고 오른쪽 하위 나무의 깊이가 사용될 수 있습니다.
다음과 같이 코드 코드를 복사하십시오.
// 최대 깊이를 얻습니다
public static int getmaxdepth (treenode root) {{
if (root == null)
반환 0;
또 다른 {
int left = getMaxDepth (root.left);
int right = getMaxDepth (root.richt);
반환 1 + math.max (왼쪽, 오른쪽);
}
}
2. 이진 너비
대기열을 사용하여 이진 트리 층을 가로 지르십시오. 이전 레이어가 완료되면 다음 레이어의 모든 노드가 큐에 배치되었습니다. 유사하게, 다음 층에서 이진 트리의 최대 너비를 찾을 수 있습니다.
다음과 같이 코드 코드를 복사하십시오.
// 최대 너비를 얻습니다
public static int getmaxwidth (Timeode root) {{
if (root == null)
반환 0;
대기열 <타르
int maxwitdth = 1;
queue.add (루트);
while (true) {
int len = queue.size ();
if (len == 0)
부서지다;
while (len> 0) {// 현재 레이어 인 경우 노드가 있습니다.
treat t = queue.poll ();
렌-;
if (t.left! = null)
queue.add (t.left); // 팀의 다음 노드
if (t.right! = null)
queue.add (T.right);
}
maxwitdth = math.max (maxwitdth, queue.size ());
}
Maxwitdth를 반환합니다.
}