offer題目33:判斷是否是二叉搜索樹的后序遍歷序列

題目描述:輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷結果。如果是則返回true,否則返回false。假設輸入的數組的任意兩個數字都互不相同。例如,輸入數組{5,7,6,9,11,10,8},則返回true,,因為這個整數是下圖二叉搜索樹的后序遍歷結果,如果輸入的數組是{7,4,6,5},則由于沒有哪棵二叉搜索樹的后序遍歷結果是這個序列,因此返加false。

二叉搜索樹是一種二叉樹的樹形數據結構,其定義如下:

  1. 空樹是二叉搜索樹。

  2. 若二叉搜索樹的左子樹不為空,則其左子樹上所有點的附加權值均小于其根節點的值。

  3. 若二叉搜索樹的右子樹不為空,則其右子樹上所有點的附加權值均大于其根節點的值。

  4. 二叉搜索樹的左右子樹均為二叉搜索樹。

?

分析:后序遍歷得到的序列,最后一個數字是樹的根節點的值。數組中前面的數字可以分為兩部分:第一部分是左子樹節點的值,它們都比根節點的值小;第二部分是右子樹節點的值,它們都比根節點的值大。接下來可以遞歸確定與數組每一部分對應的子樹的結構。

bool VerifySquenceOfTree(int sequence[],int length){if(sequence == nullptr || length <= 0)return false;int root = sequence[length - 1];//在二叉樹搜索樹中左子樹節點的值小于根節點的值int i = 0;for(;i < length - 1;++i){if(sequence[i] > root)break;}//在二叉搜索樹中右子樹節點的值都大于根節點的值int j = i;for(;j < length - 1;++j){if(sequence[j] < root)return false;     //如果右子樹節點的值小于根節點的值則不滿足}//判斷左子樹是不是二叉搜索樹bool left = true;if(i > 0)left = VerifySquenceOfTree(sequence,i);//判斷右子樹是不是二叉搜索樹bool right = true;if(i < length - 1)right = VerifySquenceOfTree(sequence + i,length - i - 1);return (left && right);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43931.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++內存管理(上)

目錄 引入 分析 說明 C語言中動態內存管理方式 C內存管理方式 new/delete操作內置類型 new和delete操作自定義類型 引入 我們先來看下面的一段代碼和相關問題 int globalVar 1; static int staticGlobalVar 1; void Test() { static int staticVar 1; int localVar 1…

集訓day3:并查集

一、目錄 1.并查集模版 2.并查集的理解和應用 二、正文 1.并查集模版 P3367 【模板】并查集 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 2.并查集的理解與應用 (1).并查集與聯通塊數量 P1197 [JSOI2008] 星球大戰 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) P1656 炸…

數圖助推朝陽佳惠遼寧華聯開啟數字化導航、精細化管理新紀元!

近期&#xff0c;遼寧省著名零售企業朝陽佳惠與遼寧華聯&#xff0c;秉持創新精神&#xff0c;大膽嘗試&#xff0c;在品類空間管理方面推出了創新舉措。引入了先進的數圖可視化陳列管理系統&#xff0c;通過智能化、直觀化的方式優化商品布局。此舉不僅大幅提高了商品管理的效…

去除各種軟件彈窗教程

清羽彈窗 在mutil/OnlineDialog/onPostExecute前 添加return-void Arm彈窗 第一步&#xff0c;提取安裝包 第二步&#xff0c;搜索代碼Ljava/io/DataOutputStream;->flush()V 第三步&#xff0c;往上看找到 .registers 10 在下面加return-void 云注入彈窗 第一種方法:dex搜…

Sql 導入到 Excel 工具

Sql 導入到 Excel 工具 這個VBA宏的步驟如下&#xff1a; 通過文件對話框選擇SQL文件。讀取文件內容。解析文件中的每一行&#xff0c;如果包含“insert into”&#xff0c;則提取表名。檢查是否已經存在以表名命名的工作表&#xff0c;如果不存在則創建新的工作表。將數據插…

element-ui封裝分頁組件:實現首頁、上一頁、下一頁、末頁、跳轉按鈕

首頁、上一頁、下一頁、末頁、跳轉按鈕 因為el-pagination只有一個插槽&#xff0c;所以通過兩個el-pagination插槽分別加入首頁、末頁按鈕&#xff0c;再拼接這兩個el-pagination的方式來實現首頁、末頁按鈕跳轉按鈕不用加事件&#xff0c;如果el-pagination修改了前往的頁數…

【work】AI八股-神經網絡相關

Deep-Learning-Interview-Book/docs/深度學習.md at master amusi/Deep-Learning-Interview-Book GitHub 網上相關總結&#xff1a; 小菜雞寫一寫基礎深度學習的問題&#xff08;復制大佬的&#xff0c;自己復習用&#xff09; - 知乎 (zhihu.com) CV面試問題準備持續更新貼 …

VOI(Virtual Operating System Infrastructure,虛擬操作系統基礎架構)

VOI&#xff08;Virtual Operating System Infrastructure&#xff0c;虛擬操作系統基礎架構&#xff09;架構在桌面虛擬化領域具有其獨特的優勢&#xff0c;使得它在某些場景下表現尤為出色。以下是幾個具體場景&#xff1a; 1. 重載性能需求場景 表現&#xff1a; 高效利用…

聚類分析方法(二)

目錄 三、層次聚類方法&#xff08;一&#xff09;層次聚類策略&#xff08;二&#xff09;AGNES算法&#xff08;三&#xff09;DIANA算法 四、密度聚類方法&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;算法描述&#xff08;三&#xff09;計算實例&#xf…

Google賬號輸入用戶名和密碼后提醒要到手機通知點是,還要點擊數字,但是我手機收不到

有一些朋友換了一個新的電腦后手機登錄谷歌賬號時&#xff0c;用戶名和密碼都正確輸入以后&#xff0c;第三步彈出一個提示&#xff0c;要在手機上的通知欄點擊是&#xff0c;并且點擊手機上相應的數字才能繼續登錄。 但是自己的手機上下拉通知欄卻沒有來自谷歌的通知&#xf…

ADOQuery 查詢MSSQL存儲過程一個莫名其妙的錯誤;

在 SSMS 中執行完成正常的的存儲過程。 也能正常的返回想要的數據&#xff0c;&#xff0c;然后通過 ADO 查詢時&#xff0c;總是提法 某 字段不存在的問題&#xff1b; 此問題困擾了一天。 例如&#xff08;當然&#xff0c;實際數據結構比下面舉例的復雜&#xff09;&…

C++八股(二)之C++11新特性

一、C++11有什么新特性?? 自動類型推導(Type Inference):引入了 auto 關鍵字,允許編譯器根據初始化表達式的類型自動推導變量的類型。統一的初始化語法(Uniform Initialization Syntax):引入了用花括號 {} 進行初始化的統一語法,可以用于初始化各種類型的對象,包括基…

符號同步、定時同步和載波同步

符號同步、定時同步和載波同步是通信系統中重要的同步技術&#xff0c;它們各自承擔著不同的功能和作用。以下是對這三種同步技術的詳細解釋&#xff1a; 符號同步 定義&#xff1a; 符號同步&#xff0c;也稱為定時恢復或時鐘恢復&#xff0c;是指在數字通信系統中&#xff…

繼承關系中的訪問控制

繼承關系中的訪問控制 類中成員的訪問權限類繼承中的訪問權限派生類向基類轉換的權限問題&#xff08;向上轉型&#xff09;友元在繼承中的訪問權限 類中成員的訪問權限 public&#xff1a;類的對象&#xff08;外部&#xff09;可以訪問&#xff0c;派生類也可以訪問protecte…

LeNet原理及代碼實現

目錄 1.原理及介紹 2.代碼實現 2.1model.py 2.2model_train.py 2.3model.test.py 1.原理及介紹 2.代碼實現 2.1model.py import torch from torch import nn from torchsummary import summaryclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__…

nuxt、vue樹形圖d3.js

直接上代碼 //安裝 npm i d3 --save<template><div class"d3"><div :id"id" class"d3-content"></div></div> </template> <script> import * as d3 from "d3";export default {props: {d…

Github Actions 構建Vue3 + Vite項目

本篇文章以自己創建的項目為例&#xff0c;用Github Actions構建。 Github地址&#xff1a;https://github.com/ling08140814/myCarousel 訪問地址&#xff1a;https://ling08140814.github.io/myCarousel/ 具體步驟&#xff1a; 1、創建一個Vue3的項目&#xff0c;并完成代…

接口基礎知識1:認識接口

課程大綱 一、定義 接口&#xff1a;外部與系統之間、內部各子系統之間的交互點。 比如日常使用的電腦&#xff0c;有電源接口、usb接口、耳機接口、顯示器接口等&#xff0c;分別可以實現&#xff1a;與外部的充電、文件數據傳輸、聲音輸入輸出、圖像輸入輸出等功能。 接口的本…

262個地級市-市場潛力指數(do文件+原始文件)

全國262個地級市-市場潛力指數&#xff08;市場潛力計算方法代碼數據&#xff09;_市場潛力數據分析資源-CSDN文庫 市場潛力指數&#xff1a;洞察未來發展的指南針 市場潛力指數是一個綜合性的評估工具&#xff0c;它通過深入分析市場需求、競爭環境、政策支持和技術創新等多個…

面向字節流傳輸數據

當提到“傳輸數據面向字節流”&#xff0c;這是指在網絡通信中&#xff0c;數據被視作一連串的無結構字節&#xff0c;而不是按照特定的數據塊或記錄進行傳輸。這種傳輸方式是面向傳輸層協議&#xff08;如TCP&#xff09;的一個特性&#xff0c;它允許數據以連續的字節流形式在…