难度简单1428
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
class Solution {
int max = 0;
public int maxDepth(TreeNode root) {
process(root,1);
return max;
}
public void process(TreeNode root,int level){
if(root == null)return;
max = Math.max(max,level);
process(root.left,level+1);
process(root.right,level+1);
}
}
难度简单876
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:2
class Solution {
int min = Integer.MAX_VALUE;
public int minDepth(TreeNode root) {
if(root == null)return 0;
process(root,1);
return min;
}
public void process(TreeNode root,int level){
if(root == null){
return;
}
if(root.left == null && root.right == null)min = Math.min(min,level);
process(root.left,level+1);
process(root.right,level+1);
}
}
难度中等822
给你一棵 完全二叉树 的根节点 root
,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h
层,则该层包含 1~ 2h
个节点。
示例 1:
输入:root = [1,2,3,4,5,6] 输出:6
class Solution {
public int countNodes(TreeNode root) {
if(root == null)return 0;
//根据完全二叉树的性质来计算
int ll = countL(root.left);
int rl = countL(root.right);
if(ll == rl){
return countNodes(root.right) + (1<<ll);
}else{
return countNodes(root.left) + (1<<rl);
}
}
public int countL(TreeNode root){
if(root == null)return 0;
int sum = 0;
while(root != null){
sum += 1;
root = root.left;
}
return sum;
}
}