返回
刷题必备:杨辉三角变形与二叉树镜像的通关秘籍
后端
2023-11-18 19:09:01
杨辉三角的变形
杨辉三角是一种排列成三角形且满足特定规律的数组。杨辉三角的变形题通常要求对原有三角形进行操作,并输出变形后的结果。
在本例中,题目要求将杨辉三角每一层的元素倒序排列,形成一个新的三角形。
import java.util.ArrayList;
import java.util.List;
public class PascalTriangle变形 {
public static void main(String[] args) {
int numRows = 5;
List<List<Integer>> triangle = generate(numRows);
for (List<Integer> row : triangle) {
Collections.reverse(row);
}
System.out.println(triangle);
}
public static List<List<Integer>> generate(int numRows) {
List<List<Integer>> triangle = new ArrayList<>();
for (int i = 0; i < numRows; i++) {
List<Integer> row = new ArrayList<>();
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
row.add(1);
} else {
row.add(triangle.get(i - 1).get(j - 1) + triangle.get(i - 1).get(j));
}
}
triangle.add(row);
}
return triangle;
}
}
二叉树的镜像
二叉树是一种重要的数据结构,由结点和边组成。一个结点可能包含数据,并具有零个或多个子结点。二叉树的镜像题通常要求将原有二叉树的左右子树交换,形成一个镜像二叉树。
在本例中,题目要求对给定的二叉树进行镜像变换,并返回镜像后的二叉树。
public class 二叉树的镜像 {
public static void main(String[] args) {
TreeNode root = new TreeNode(4);
root.left = new TreeNode(2);
root.right = new TreeNode(7);
root.left.left = new TreeNode(1);
root.left.right = new TreeNode(3);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(9);
TreeNode mirror = mirrorTree(root);
System.out.println(mirror);
}
public static TreeNode mirrorTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = mirrorTree(root.left);
TreeNode right = mirrorTree(root.right);
root.left = right;
root.right = left;
return root;
}
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
}
通过对这些题目的详细分析,读者可以深刻理解杨辉三角的构造和变形规律,以及二叉树的镜像变换过程。掌握这些算法技巧,将极大提升刷题效率,为进阶算法学习和实际应用奠定基础。