本篇经验将分享一道常见的算法笔试题:如何获取一棵二叉树的最大深度和最小深度,最大深度定义:根节点到叶子节点最长路径中的节点数;最小深度定义:根节点到叶子节点最短路径中的节点数。
工具/原料
JDK1.8
Eclipse
方法/步骤
1、创建一个表示二叉树节点的静态内部类,图示,通过该类对象可以构建一棵二叉树结构。
2、实现算法,通过递归调用,获取二叉树最大深度:1.如果当前二叉板曰剔囡树节点为空,则直接返回0;2.通过稣匚邸腼递归调用,分别获取当前节点左右子树的最大深度;3.左右子树最大深度的较大值加1,即二叉树的最大深度。
3、实现算法,通过递归调用,获取二叉树最小深度:1.如果当前二叉板曰剔囡树节点为空,则直接返回0;2.通过稣匚邸腼递归调用,分别获取当前节点左右子树的最小深度;3.如果当前节点的左子树为空,则其最小深度就是右子树最小深度加1;4.如果当前节点的右子树为空,则其最小深度就是左子树最小深度加1;5.如果左右子树都不为空,则其最小深度为左右子树最小深度的较小值加1;
4、编写本地测试主方法,图示,构建一棵二叉树,分别获取其最大深度和最小深度,并打印到控制台。
5、运行主方法,观察控制台输出,图示,输出的二叉树最大深度和最小深度数值符合预期,测试通过。