1.知识储备
2.代码实现:
//获取整个树的最大深度
public int maxDepth(){
return maxDepth(root);
}
//获取指定树x的最大深度
private int maxDepth(Node x){
//安全性验证
if(x==null){
return 0;
}
//定义三个变量
//树x的最大深度
int max=0;
//树x左子树的最大深度
int maxL=0;
//树x右子树的最大深度
int maxR=0;
//计算x节点左子树的最大深度
if(x.left!=null){
maxL=maxDepth(x.left);
}
//计算x节点右子树的最大深度
if(x.right!=null){
maxR=maxDepth(x.right);
}
//比较左子树最大深度和右子树最大深度,取较大值+1即可
max=maxL>=maxR?maxL:maxR;
return max+1;
}
3.测试程序:
package Tree;
public class TreeMaxDepthTest {
public static void main(String[] args) {
//创建树
binaryTree<String, String> tree =new binaryTree<String, String>();
tree.put("E","蜘蛛侠");
tree.put("B","蝙蝠侠");
tree.put("G","钢铁侠");
tree.put("A","绿巨人");
tree.put("D","美国队长");
tree.put("F","黑豹");
tree.put("H","战争机器");
tree.put("C","战争机器");
System.out.println("最大深度为:"+tree.maxDepth());
}
}
4.运行结果: