第111题
题目描述:
题目分析:
这题一定要注意题目所说的最小深度,其实是根节点与其最近的叶子结点之间的距离,故而要注意叶子结点这个关键条件。
代码:
public class MinDepth {
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
System.out.println(minDepth(root));
}
public static int minDepth(TreeNode root) {
if (root==null){
return 0;
}
if(root.left==null&&root.right==null){
return 1;
}else if (root.left!=null&&root.right!=null){
return Math.min(minDepth(root.left),minDepth(root.right))+1;
}else if (root.left==null&&root.right!=null){
return minDepth(root.right)+1;
}else {
return minDepth(root.left)+1;
}
}
}
结果显示:
第118题
题目描述:
题目分析:
这题主要处理好上下数组之间的关系,已经进行好第一行的初始化关系即可。
代码:
import java.util.ArrayList;
import java.util.List;
public class YangHui {
public static void main(String[] args) {
int numRows = 5;
List<List<Integer>> biglist = generate(numRows);
for (int i = 0; i < numRows; i++) {
List<Integer> list = biglist.get(i);
for (int j = 0; j < list.size(); j++) {
System.out.print(list.get(j)+" ");
}
System.out.println();
}
}
public static List<List<Integer>> generate(int numRows) {
List<Integer> list1 = new ArrayList<>(); //这是第一行list
List<List<Integer>> bigList = new ArrayList<>(); //这是总的list
if (numRows==0)
return bigList;
list1.add(1);
bigList.add(list1); //初始化好第一行的数字
for (int i=1;i<numRows;i++){
List<Integer> prelist = new ArrayList<>(); //这是要初始化的当前行的前面一行
List<Integer> list = new ArrayList<>();
list.add(1);
for (int j = 1; j < i; j++) {
prelist = bigList.get(i-1);
list.add(prelist.get(j-1)+prelist.get(j)); //当前行是前一行相对位置的和
}
list.add(1);
bigList.add(list);
}
return bigList;
}
}