[力扣算法题]572. 另一棵树的子树(对照官方题解复现,加入了一点自己的理解,欢迎一起讨论!😃)
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
// follow the official website and then type the following code
public boolean isSubtree(TreeNode root, TreeNode subRoot) {
return dfs(root, subRoot);
}
public static boolean dfs(TreeNode root, TreeNode subRoot){
// if(root == null || subRoot == null)return false; type error
// if(subRoot == null)return false; // type error
if(root == null)return false;
// subRoot maybe in the left of root or in the right of root or just is root,
// as long as one posibility is right, so return true;