求树的深度
基础慢慢补回来
递归
递归就不仔细介绍了:比左右的子树取最大值。
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);
}
才学疏浅,有什么问题请大家指出来。十分感谢!