Java 题解 | #牛群的相似结构#
牛群的相似结构
https://www.nowcoder.com/practice/ecaeef0d218440d295d9eff63fbc747c
该题考察的主要知识点包括:
- 二叉树的遍历:深度优先搜索(DFS)是一种遍历二叉树的方法,通过递归或栈的方式,可以遍历树的所有节点。
- 递归:在判断两个二叉树的结构是否相同时,使用了递归的方式,递归是解决树相关问题的常用技巧。
- 字符串的比较:为了判断两个二叉树的结构是否相同,将树的结构表示为字符串,并通过字符串的比较来判断是否相同。
代码解释大纲:
- 定义二叉树节点类 TreeNode,包含 val 表示牛的编号,left 表示左子节点,right 表示右子节点。
- 编写一个 Solution 类,包含一个 isSameCowStructure 方法,用于判断两个牛群的结构是否相同。
- isSameCowStructure 方法接收两个参数 root1 和 root2,分别代表两个牛群的根节点。
- 在 isSameCowStructure 方法内部,调用 getTreeStructure 方法获取两个牛群的结构表示,然后通过字符串的比较来判断是否相同,并返回结果。
- getTreeStructure 方法是一个递归方法,用于将二叉树表示为字符串。如果节点为空,则用 # 表示,否则使用节点的值作为字符串的一部分,并继续递归处理左右子节点。
总体来说,代码利用深度优先搜索遍历两个二叉树,将它们的结构表示为字符串,然后通过字符串的比较来判断这两个牛群的结构是否相同。
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param p TreeNode类
* @param q TreeNode类
* @return bool布尔型
*/
public boolean isSameTree (TreeNode p, TreeNode q) {
// write code here
String tree1 = isSameTree(p);
String tree2 = isSameTree(q);
return tree1.equals(tree2);
}
// 使用DFS将二叉树表示为字符串
private String isSameTree(TreeNode root) {
if (root == null) {
return "#";
}
StringBuilder sb = new StringBuilder();
sb.append(root.val);
sb.append(isSameTree(root.left));
sb.append(isSameTree(root.right));
return sb.toString();
}
}
查看20道真题和解析