package com.camnter.basicexercises.tree;
import com.camnter.basicexercises.core.TreeNode;
import java.util.LinkedList;
import java.util.Queue;
/**
* 树的深度计算
* - 1
* - 2 3
* - 4 5 6
* - 7 8
*
* 深度 4
*
* @author CaMnter
*/
public class CountLayer {
public void countLayer(TreeNode root) {
if (root == null) return;
Queue> queue = new LinkedList>();
queue.add(root);
int currentLayer = 1;
int nextLayer = 0;
int layerCount = 0;
TreeNode current;
while (!queue.isEmpty()) {
current = queue.poll();
System.out.print(current.value + " ");
currentLayer--;
if (current.left != null) {
queue.add(current.left);
nextLayer++;
}
if (current.right != null) {
queue.add(current.right);
nextLayer++;
}
if (currentLayer == 0) {
System.out.println("");
currentLayer = nextLayer;
nextLayer = 0;
layerCount++;
}
}
System.out.println("深度 = " + layerCount);
}
public static void main(String args[]) {
CountLayer countLayer = new CountLayer();
countLayer.countLayer(TreeNode.getTree());
}
}