面试题55 - I. 二叉树的深度
Description
难度:简单15
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
提示:
节点总数 <= 10000
Solution
解答一:
前序遍历二叉树,计算递归的深度,找到最长的递归深度即可
执行结果:class Solution {int maxDepth;public int maxDepth(TreeNode root) {maxDepth = 0;int depth = 0;pre(root, depth+1);return maxDepth;}public void pre(TreeNode node, int depth){if(node == null ){if((depth - 1) > maxDepth)maxDepth = depth - 1;return;}pre(node.left, depth+1);pre(node.right, depth + 1);}}
执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户。
内存消耗 :39.8 MB, 在所有 Java 提交中击败了100.00%的用户。
解答二:
后序遍历,返回左右子树中深度最大的数再加上 1
class Solution {public int maxDepth(TreeNode root) {return postRecursion(root);}public int postRecursion(TreeNode node){if (node == null)return 0;int leftNums = postRecursion(node.left);int rightNums = postRecursion(node.right);return Math.max(leftNums, rightNums) + 1;}}
执行结果:通过
显示详情
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:38.5 MB, 在所有 Java 提交中击败了70.07%的用户
