剑指offer-树的子结构

来源:互联网 发布:人工智能能否超越人脑 编辑:程序博客网 时间:2024/05/18 02:05


题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
代码如下:

 /**     * Created with IntelliJ IDEA.     * Author: 郑文华     * Date: 2017/10/12     * Time: 14:21     *  public static class TreeNode {        int val = 0;        TreeNode left = null;        TreeNode right = null;        public TreeNode(int val ){            this.val = val;        }    }     */public class Main {    public boolean HasSubtree(TreeNode node1,TreeNode node2){        if(node2 == null){            return false;        }        if(node1 == null && node2 != null){            return false;        }        boolean flag = false;        if(node1.val == node2.val){            flag = isSubTree(node1,node2);        }        if(!flag){            flag = HasSubtree(node1.left,node2);            if(!flag){                flag = HasSubtree(node1.right,node2);            }        }        return flag;    }    public boolean isSubTree(TreeNode node1, TreeNode node2){        if(node2 == null){            return true;        }        if(node1 == null && node2 != null){            return false;        }        if(node1.val == node2.val){            return isSubTree(node1.left, node2.left) && isSubTree(node1.right, node2.right);        }else {            return false;        }    }