求樹的深度
基礎慢慢補回來
遞歸
遞歸就不仔細介紹了:比左右的子樹取最大值。
public int calculateHeight(BinaryTreeNode node) {
if (node == null) {
return 0;
}
int left = calculateHeight(node.leftNode) + 1;
int right = calculateHeight(node.rightNode) + 1;
return left > right ? left : right;
}
非遞歸
借鑑按層遍歷,遍歷一層後高度+1
public static void calculateHeight(Queue<BinaryTreeNode> queue) {
//number 表示當前層節點個數
int number = queue.size();
int height = 0;
while (!queue.isEmpty()) {
while (number > 0) {
//出隊列
BinaryTreeNode tempNode = queue.poll();
if (tempNode.leftNode != null) {
queue.add(tempNode.leftNode);
}
if (tempNode.rightNode != null) {
queue.add(tempNode.rightNode);
}
number--;
}
number = queue.size();
height++;
}
System.out.println("樹的高度是:" + height);
}