目录
一. 另一颗树的子树
1.1 题目
1.2 示例
1.3 分析
1.4 解决
二. 平衡二叉树
2.1 题目
2.2 示例
2.3 分析
2.4 解决
三. 二叉树的遍历和创建
3.1 题目
3.2 示例
3.3 解决
一. 另一颗树的子树572. 另一棵树的子树 - 力扣(LeetCode)
1.1 题目
1.2 示例
1.3 分析
遍历root树, 找到与subRoot树起始节点数值相等的节点. 之后再判断以这个节点起始的子树是否与subRoot相同.
1.4 解决
二. 平衡二叉树110. 平衡二叉树 - 力扣(LeetCode)
2.1 题目
2.2 示例
2.3 分析
平衡二叉树: 每个节点的左右子树的高度差 <= 1.
前序遍历每个节点, 再分别求出每个节点左右子树的高度, 最后做差判断是否符合条件.
2.4 解决
三. 二叉树的遍历和创建二叉树遍历_牛客题霸_牛客网 (nowcoder.com)
3.1 题目
3.2 示例
3.3 解决
import java.util.Scanner;
class TreeNode {char ch;TreeNode left;TreeNode right;TreeNode(char ch) {this.ch = ch;}
}
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNext()) { // 注意 while 处理多个 caseString string = in.next();// System.out.println(string);// 创建二叉树TreeNode root = createTree(string);// 中序遍历inorderTree(root);}}public static int i = 0;public static TreeNode createTree(String string) {if (i == string.length()) return null;TreeNode root = null;if (string.charAt(i) == '#') {i++;} else {root = new TreeNode(string.charAt(i));i++;root.left = createTree(string);root.right = createTree(string);}return root;}public static void inorderTree(TreeNode root) {if (root == null) return;inorderTree(root.left);System.out.print(root.ch + " ");inorderTree(root.right);}
}