本文主要是介绍剑指offer-判断B是不是A的子结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
<span style="color:#333333;">public class Solution001 {boolean result=false;</span><span style="color:#3333ff;">//先找到root1中是否有root2根节点元素相同值,相同就进入nextHasSubtree</span><span style="color:#333333;">public boolean HasSubtree(TreeNode root1,TreeNode root2) {boolean result=false;if(root1!=null&&root2!=null){if(root1.val==root2.val){result=nextHasSubtree(root1,root2);}if(!result){result=HasSubtree(root1.left, root2);}if(!result){result=HasSubtree(root1.right, root2);}}return result;}//找到相同值,再判断后续元素的左右树是不是相同,若不相同在返回HasSubtree判断private boolean nextHasSubtree(TreeNode root1, TreeNode root2) {// TODO Auto-generated method stubif(root2==null){ //这两个if判断顺序不能改变:return true; //因为一旦B树节点空就能判断是true}if(root1==null){return false;}if(root1.val!=root2.val){return false;}return nextHasSubtree(root1.left, root2.left)&&nextHasSubtree(root1.right, root2.right);}
}</span>
这篇关于剑指offer-判断B是不是A的子结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!