输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
2017-10-25 19:34
399 查看
package com.dixin.temp; import org.junit.Test; import java.util.ArrayList; /** * Created by admin on 2017/10/25. * 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) */ public class I { class TreeNode {//内部类二叉树类 int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public boolean HasSubtree(TreeNode root1,TreeNode root2) { //思路:用先序或者中序或者后序遍历,两树应该一致 //注意:此题先序遍历不好使,一开始就用的先序,先序左与右分开,遍历时中间会插入别的元素 if(root1==null||root2==null) { return false; } ArrayList<TreeNode> list1=new ArrayList<>();//A树的中序遍历 ArrayList<TreeNode> list2=new ArrayList<>();//B树的中序遍历 pre(root1,list1); pre(root2,list2); StringBuffer sb1=new StringBuffer();//StringBuffer相比于String更适合做字符串连接 for(int i=0;i<list1.size();i++) { sb1.append(list1.get(i).val); } StringBuffer sb2=new StringBuffer(); for(int i=0;i<list2.size();i++) { sb2.append(list2.get(i).val); } //判断字符串2是否是字符串1的字串 return sb1.toString().indexOf(sb2.toString())>=0?true:false; } public void pre(TreeNode root,ArrayList<TreeNode> list) {//我用的中序遍历中左右 if(root==null) { return; } list.add(root); pre(root.left,list); pre(root.right,list); } @Test public void test() { TreeNode root1=new TreeNode(1); root1.left=new TreeNode(2); root1.right=new TreeNode(3); TreeNode root2=new TreeNode(1); root2.left=new TreeNode(2); root2.right=new TreeNode(3); HasSubtree(root1,root2); } }
相关文章推荐
- 剑指offer-输入两棵二叉树A,B,判断B是不是A的子结构(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 剑指offer:输入两棵二叉树A,B,判断B是不是A的子结构(Python)
- 输入两棵二叉树A,B,判断B是不是A的子结构(c++实现)
- 第6天 输入两棵二叉树A和B,判断B是不是A的子结构。
- 15.输入两棵二叉树A,B,判断B是不是A的子结构
- 输入两棵二叉树A,B,判断B是不是A的子结构。
- 输入两棵二叉树A,B,判断B是不是A的子结构
- 剑指offer 18---输入两棵二叉树A和B,判断B是不是A的子结构
- java实现输入两棵二叉树A,B,判断B是不是A的子结构
- 题目:输入两棵二叉树A和B,判断B是不是A的子结构。
- JavaScript编程--任意输入一个数判断是不是闰年,数列求和练习