树的子结构 发表于 2019-03-10 | 分类于 剑指offer | | 阅读次数: 字数统计: 191字 | 阅读时长 ≈ 1分钟 题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路 首先在A中需找到一个结点C与B的根节点相等 然后判断以C为根节点的子树是否与B的结构一致 代码12345678910111213141516171819202122232425262728293031323334/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { 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); } 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); }} 坚持原创技术分享,您的支持将鼓励我继续创作! 打赏 微信支付 支付宝