共计 980 个字符,预计需要花费 3 分钟才能阅读完成。
树的子结构
题目形容
输出两棵二叉树 A,B,判断 B 是不是 A 的子结构。(ps:咱们约定空树不是任意一个树的子结构)
题目链接 : 树的子结构
代码
/**
* 题目:树的子结构
* 题目形容
* 输出两棵二叉树 A,B,判断 B 是不是 A 的子结构。(ps:咱们约定空树不是任意一个树的子结构)* 题目链接:* https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&&tqId=11170&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
*/
public class Jz17 {public static void main(String[] args) {TreeNode root1 = new TreeNode(2);
TreeNode root2 = new TreeNode(2);
Jz17 jz17 = new Jz17();
System.out.println(jz17.hasSubtree(root1, root2));
}
public boolean hasSubtree(TreeNode root1, TreeNode root2) {if (root1 == null || root2 == null) {return false;}
return isSubtreeWithRoot(root1, root2) || hasSubtree(root1.left, root2) || hasSubtree(root1.right, root2);
}
/**
* 递归法
*
* @param root1
* @param root2
* @return
*/
private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) {if (root2 == null) {return true;}
if (root1 == null) {return false;}
if (root1.val != root2.val) {return false;}
return isSubtreeWithRoot(root1.left, root2.left) && isSubtreeWithRoot(root1.right, root2.right);
}
}
【每日寄语】总之岁月漫长,然而值得期待。
正文完