本文主要是介绍【剑指offer】之树的子结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构。如下图:
分析:
第一步在A树中查找与B子树跟节点一样的节点,第二步判断跟节点一样的A树节点的结构是否与B中的结构一样。
java代码实现:
//判断子树2是否是树1的子树public boolean isSubTree(Node root1, Node root2) {boolean result = false;if(root1!=null && root2!=null) { if(root1.data.equals(root2.data))result = doesTree1hasTree2(root1,root2);if(!result)result = isSubTree(root1.left, root2);if(!result)result = isSubTree(root1.right, root2);}return result;}private boolean doesTree1hasTree2(Node root1, Node root2) {if(root2==null)return true;if(root1==null)return false;if(!root1.data.equals(root2.data))return false;return doesTree1hasTree2(root1.left, root2.left) && doesTree1hasTree2(root1.right, root2.right);}
这篇关于【剑指offer】之树的子结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!