劍指Offer學習-面試題26:樹的子結構

	/**
     * 樹的子結構
     *
     * @param a
     * @param b
     * @return
     */
    public boolean hasSubtree(TreeNode a, TreeNode b) {
        boolean res = false;
        if (a != null && b != null) {
            if (Objects.equals(a.val, b.val)) {
                res = doesTree1HaveTree2(a, b);
            }
            if (!res) {
                //看左子樹是否與之相等
                res = hasSubtree(a.left, b);
            }
            if (!res) {
                //看右子樹是否與之相等
                res = hasSubtree(a.right, b);
            }
        }
        return res;

    }

    /**
     * 判斷兩顆樹是否相等
     *
     * @param a
     * @param b
     * @return
     */
    public boolean doesTree1HaveTree2(TreeNode a, TreeNode b) {
        if (null == b) return true;
        if (null == a) return false;
        if (Objects.equals(a.val, b.val)) return false;
        return doesTree1HaveTree2(a.left, b.left) && doesTree1HaveTree2(a.right, b.right);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章