主頁 >  其他 > 劍指 Offer 33. 二叉搜索樹的后序遍歷序列(java解題)

劍指 Offer 33. 二叉搜索樹的后序遍歷序列(java解題)

2023-04-23 07:37:34 其他

目錄
  • 1. 題目
  • 2. 解題思路
  • 3. 資料型別功能函式總結
  • 4. java代碼
  • 5. 踩坑小記
    • 遞回呼叫,顯示StackOverflowError

1. 題目

輸入一個整數陣列,判斷該陣列是不是某二叉搜索樹的后序遍歷結果,如果是則回傳 true,否則回傳 false,假設輸入的陣列的任意兩個數字都互不相同,

參考以下這顆二叉搜索樹:

     5
    / \
   2   6
  / \
 1   3
示例 1:
輸入: [1,6,3,2,5]
輸出: false
示例 2:
輸入: [1,3,2,6,5]
輸出: true

提示:

陣列長度 <= 1000

作者:Krahets
鏈接:https://leetcode.cn/leetbook/read/illustration-of-algorithm/5vwxx5/
來源:力扣(LeetCode)
著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處,

2. 解題思路

使用遞回分治的思路:

  • 根據最后一個值x,劃分為左右子陣列;
    • 查找比x大的元素,第一個比x大的元素下標為i,在此處劃分陣列[start,i-1][i,end]
  • 檢查左右陣列:左陣列的元素均小于x,右陣列的元素均大于x
    • 由于左陣列元素和x的大小關系已經確定,只需要檢查右陣列和x的大小關系即可,
    • 如果右陣列不符合要求,直接回傳false;否則繼續執行下一步
  • 對左右子陣列,重復上述步驟;

終止條件:陣列為慷訓者只有一個元素,回傳true

3. 資料型別功能函式總結

//陣列
int len=arrayname.length;//陣列長度

4. java代碼

class Solution {
    public boolean verifyPostorder(int[] postorder) {
        return recur(postorder,0,postorder.length-1);
    }
    public boolean recur(int[] postorder,int start,int end){
        if(end-start<=1){
            return true;
        }
        else{
            int root_val=postorder[end];
            int i=start;
            for(i=start;i<end;i++){
                if(postorder[i]>root_val){
                    break;
                }
            }
            //得到i,左右陣列[start,i-1],[i,end-1]
            //檢查左右陣列
            int flag=0;
            for(int j=i;j<end && flag==0;j++){
                if(postorder[j]<root_val){
                    flag=1;
                }
            }
            if(flag==0){
                return  recur(postorder,start,i-1)&&recur(postorder,i,end-1);
            }
            else{
                return false;
            }

        }
    }
}

5. 踩坑小記

遞回呼叫,顯示StackOverflowError

遞回函式的部分為:

if(flag==0){
    return  recur(postorder,start,i-1)&&recur(postorder,i,end-1);
}

而我一開始寫成了:

if(flag==0){
    return  recur(postorder,start,i-1)&&recur(postorder,i,end);
}

然后一直報錯顯示StackOverflowError,后來發現是右陣列劃分的時候,傳入end就會導致后序遍歷一直停留在和根節點的比較上,無法退出回圈,導致堆疊溢位,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550868.html

標籤:其他

上一篇:Jmeter測驗工具-測驗基礎(4)-引數化及控制器等

下一篇:返回列表

標籤雲
其他(157863) Python(38092) JavaScript(25381) Java(17985) C(15215) 區塊鏈(8258) C#(7972) AI(7469) 爪哇(7425) MySQL(7137) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4557) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2430) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1959) Web開發(1951) HtmlCss(1919) python-3.x(1918) 弹簧靴(1913) C++(1910) xml(1889) PostgreSQL(1872) .NETCore(1854) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 劍指 Offer 33. 二叉搜索樹的后序遍歷序列(java解題)

    leetcode《圖解資料結構》劍指 Offer 33. 二叉搜索樹的后序遍歷序列(java解題)的解題思路和java代碼,并附上java中常用資料結構的功能函式。 ......

    uj5u.com 2023-04-23 07:37:34 more
  • Jmeter測驗工具-測驗基礎(4)-引數化及控制器等

    一:jmeter中引數化 引數化:是指把請求中的請求引數的常量變為變數,即靜態引數實作動態加載 引數化方式: 1,CSV 資料檔案設定 2,用戶定義的變數(引數一般當做全域的) 3,函式助手:例如:_rodmon 1,CSV 資料檔案設定 1,檔案名為存放引數檔案的路徑 例如C:/Users/MI/ ......

    uj5u.com 2023-04-23 07:35:42 more
  • selenium 4(python)快速入門-1 簡介

    Selenium歷史 Selenium為瀏覽器自動化提供了先進的功能,從業者通常用它來實作網路應用的端到端測驗。Selenium由三個核心組件組成: WebDriver, Grid, 和 IDE。 Jason Huggins和Paul Hammant于2004年在Thoughtworks作業時創建了 ......

    uj5u.com 2023-04-23 07:35:24 more
  • 從功能到外企測開,作業1年半拿下年薪30萬的測開 offer,未來可期

    說一下我的大致情況,女,2018年畢業于末流211計算機本科。后來待業兩年,完全沒有從事互聯網方面的作業。去年來到北京,在小公司做了一年多功能測驗。今年11月底跳槽到外企,開始了我錢多事少離家近,每周965的快樂生活,現在年薪30萬左右。 降大任于斯人也,必先苦其心志 2014年,高考沒有考好,為了 ......

    uj5u.com 2023-04-23 07:34:50 more
  • 常見的webshell連接工具流量

    中國菜刀 連接程序中使用base64編碼對發送的指令進行加密,其中兩個關鍵payload z1 和 z2,名字都是可變的。 然后還有一段以QG開頭,7J結尾的固定代碼。 蟻劍 默認的user-agent請求頭是antsword xxx,不過可以修改。 一般將payload進行分段,然后分別進行bas ......

    uj5u.com 2023-04-23 07:34:23 more
  • Vulnhub之Healthcare靶機詳細測驗程序

    Healthcare 作者: jason huawen 靶機資訊 名稱: 地址: 識別目標主機IP地址 ─(kali?kali)-[~/Vulnhub/Healthcare] └─$ sudo netdiscover -i eth1 -r 192.168.56.0/24 Currently scan ......

    uj5u.com 2023-04-23 07:34:19 more
  • Vulnhub之Hacker Fest 2019靶機詳細測驗程序

    HF 2019 作者:jason huawen 靶機資訊 名稱:Hacker Fest: 2019 地址: https://www.vulnhub.com/entry/hacker-fest-2019,378/ 識別目標主機IP地址 將虛擬機鏡像匯入到VirtualBox中,并設定網路模式為host ......

    uj5u.com 2023-04-23 07:34:14 more
  • toml格式組態檔介紹

    toml官方wik toml官方檔案 此次檔案是以v1.0.0為例,進行說明的。如果使用到的版本不同,直接去官方檔案中找對應的版本即可。 談到組態檔,大家都能說出來好幾種,比如常見的ini、xml、json、yaml、properties、toml等等,因為專案中用到了toml格式的組態檔,但是 ......

    uj5u.com 2023-04-22 07:45:22 more
  • 【ZeroMQ】zguide 第一章 部分翻譯

    為了更好的閱讀體驗,請點擊這里 本文大部分內容翻譯自 Chapter 1 - Basics,原因是之前翻譯的版本太老了,不得不親自披掛上陣~~拿機器翻譯一下~~。只截取了部分自己可能用得到的,所以如果有看不太懂的地方,去翻一下原網頁吧。QWQ 附贈 libzmq 的 api 介面函式說明 一份。 一 ......

    uj5u.com 2023-04-22 07:45:15 more
  • 更好地提問ChatGPT_常用prompt表

    類別目的提問方式要點 文案寫作 周報、日報、年終總結 本周我做了以下幾件事情:出差客戶辦事處、交流演示、初步資料分析。請幫我寫一份周報 要點形式列舉作業內容。可以說明職位,以便作業內容更貼合實際情況 郵件 我是某專案的專案經歷,請寫一份作業郵件,來詢問研發小組開發進度,同時邀請參加階段匯報會議 說明 ......

    uj5u.com 2023-04-22 07:45:08 more