代码随想录算法训练营第十六天|104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
104.二叉树的最大深度
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:3
题解:层序遍历,遍历一层树的深度加一。
代码:
class Solution {public int maxDepth(TreeNode root) {int res=0;if(root==null) return res;Queue<TreeNode> que=new LinkedList<>();que.offer(root);while(!que.isEmpty()){int len=que.size();while(len>0){TreeNode node=que.poll();if(node.left!=null) que.offer(node.left);if(node.right!=null) que.offer(node.right);len--;}res+=1;}return res;}
}
559.N叉树的最大深度
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:3
题解:就是n叉树的层序遍历,记录一下遍历过多少层就可以。
代码:
class Solution {public int maxDepth(Node root) {int res=0;if(root==null) return res;Queue<Node> que=new LinkedList<>();que.offer(root);while(!que.isEmpty()){int len=que.size();res++;while(len>0){Node node=que.poll();List<Node> cnode=node.children;if(cnode!=null){for(Node n:cnode){if(n!=null){que.offer(n);}}}len--;}}return res;}
}
111.二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
**说明:**叶子节点是指没有子节点的节点。
示例 1:
题解:层序遍历。需要注意的是,当遇到第一个叶子节点后后就直接返回,不要break,不然它只退出了内层循环,外层循环还在继续。
代码:
class Solution {public int minDepth(TreeNode root) {int res=0;if(root==null) return res;Queue<TreeNode> que=new LinkedList<>();que.offer(root);while(!que.isEmpty()){int len=que.size();res+=1;while(len>0){TreeNode node=que.poll();if(node.left==null && node.right==null) {return res;}if(node.left!=null) que.offer(node.left);if(node.right!=null) que.offer(node.right);len--;}}return res;}
}
222.完全二叉树的节点个数
给你一棵 完全二叉树 的根节点 root
,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h
层,则该层包含 1~ 2h
个节点。
示例 1:
输入:root = [1,2,3,4,5,6]
输出:6
题解:层序遍历,遍历到一个节点结果就加一。
代码:
class Solution {public int countNodes(TreeNode root) {int res=0;if(root==null) return res;Queue<TreeNode> que=new LinkedList<>();que.offer(root);while(!que.isEmpty()){int len=que.size();while(len>0){TreeNode node=que.poll();res++;if(node.left!=null) que.offer(node.left);if(node.right!=null) que.offer(node.right);len--;}}return res;}
}