前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉树A,B,判断B是不是A的子结构

二叉树A,B,判断B是不是A的子结构

原创
作者头像
大学里的混子
修改2019-03-01 11:54:45
7260
修改2019-03-01 11:54:45
举报
文章被收录于专栏:LeetCodeLeetCode

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

public static boolean check(TreeNode h, TreeNode t2) {
		if (t2 == null) {
			return true;
		}
		if (h == null || h.val != t2.val) {
			return false;
		}
		return check(h.left, t2.left) && check(h.right, t2.right);
	}

	public static boolean HasSubtree(TreeNode t1, TreeNode t2) {
 		if (t2 == null) {
			return false;
		}
		if (t1 == null) {
			return false;
		}
		return check(t1, t2) || HasSubtree(t1.left, t2) || HasSubtree(t1.right, t2);
	}

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

     public static boolean VerifySquenceOfBST(int [] sequence) {
        if (sequence == null || sequence.length < 1) return false;
        return helper(sequence, 0, sequence.length - 1);
    }
    public static boolean helper(int [] arr, int left, int right){
        if (left == right) return true;
        int root = arr[right];
        int i;
        for(i = left; i < right; i++){
            if (arr[i] > root){
                break;
            }
        }
        int j = i;
        for(; j < right; j++){
            if (arr[j] < root){
                return false;
            }
        }
        boolean l = true;
        if (i > left){
            l = helper(arr, left,i - 1);
        }

        boolean r = true;
        if (i < right){
            r = helper(arr, i, j -1);
        }
        return  l && r;
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档