代码实现:
public class MaxDepth {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
//通过层序遍历的方法获取最大高度
public int maxDepth1(TreeNode root) {
int depth = 0;
if (root == null) return depth;
List list = new ArrayList<>();
list.add(root);
while (!list.isEmpty()) {
depth++;
List temp = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).left != null) {
temp.add(list.get(i).left);
}
if (list.get(i).right != null) {
temp.add(list.get(i).right);
}
}
list = temp;
}
return depth;
}
//有点像动态规划 叶子节点的时候是 1 ,公式 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
public int maxDepth(TreeNode root) {
return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)