104.二叉树的最大深度
该题使用递归完成
class solution {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
return Math.max(leftDepth, rightDepth) + 1;
}
}
559. N 叉树的最大深度
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
输入:root = [1,null,3,2,4,null,5,6]
输出:3
class Solution {
public int maxDepth(Node root) {
if(root==null) return 0;
int depath=0;
if(root.children!=null){
for(Node next:root.children){
depath=Math.max(depath,maxDepth(next));
}
}
return depath+1;
}
}
111.二叉树的最小深度
使用递归实现
class Solution {
public int minDepth(TreeNode root) {
if(root==null) return 0;
int depathLeft=minDepth(root.left);
int depathRight=minDepth(root.right);
if(root.left==null) return depathRight+1;
if(root.right==null) return depathLeft+1;
return Math.min(depathRight,depathLeft)+1;
}
}
222. 完全二叉树的节点个数
给你一棵 完全二叉树的根节点
root
,求出该树的节点个数。
输入:root = [1,2,3,4,5,6]
输出:6
思路一:递归
class Solution {
public int countNodes(TreeNode root) {
if(root==null) return 0;
return countNodes(root.left)+countNodes(root.right)+1;
}
}
思路二:迭代
class Solution {
public int countNodes(TreeNode root) {
if(root==null) return 0;
Queue<TreeNode> que=new LinkedList<>();
que.offer(root);
int result=0;
while(!que.isEmpty()){
int size=que.size();
while(size-->0){
TreeNode node=que.poll();
result++;
if(node.left!=null) que.offer(node.left);
if(node.right!=null) que.offer(node.right);
}
}
return result;
}
}