/**
* 返回二叉树的深度,二叉树的高度
*/
public class MaxDeepOfBinaryTree {
/**
* 使用递归获取二叉树的高度
* @param root 二叉树
* @return 二叉树的高度
*/
public static int getHeight(BinaryTree root){
//如果节点为空则返回0
if(root == null){
return 0;
//否则比较左子树和右子树的高度,返回更大的值
}else {
int leftTreeHeight = getHeight(root.left);
int rightTreeHeight = getHeight(root.right);
//可以使用三目表达式,也可调用静态函数
// int x = leftTreeHeight > rightTreeHeight?leftTreeHeight:rightTreeHeight;
return Math.max(leftTreeHeight, rightTreeHeight) + 1;
}
}
public static void main(String[] args){
BinaryTree head = new BinaryTree(1);
BinaryTree left = new BinaryTree(2);
BinaryTree right = new BinaryTree(3);
BinaryTree left01 = new BinaryTree(4);
BinaryTree right01 = new BinaryTree(5);
head.left = left;
head.right = right;
left.left = left01;
left.right = right01;
System.out.println(getHeight(head));
System.out.println("-----------");
//返回3
}
}
//二叉树的类
class BinaryTree{
int value;
BinaryTree left;
BinaryTree right;
public BinaryTree(int value){
this.value = value;
}
}