日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法-- 二叉树后续遍历序列校验

發(fā)布時間:2023/12/4 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法-- 二叉树后续遍历序列校验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

二叉樹后續(xù)遍歷序列校驗

  • 題目:輸入一個整數(shù)數(shù)組,判斷改數(shù)組是否是某個二叉搜索樹的后續(xù)遍歷結(jié)果,如果是返回true否則false,假設輸入數(shù)組的任意兩個數(shù)字不相同。

  • 例如輸入{5,7,6,9,11,10,8}則返回true,因為這個整數(shù)序列是如下圖二叉搜索樹的后續(xù)遍歷結(jié)果:

  • 如果輸入{7,4,6,5}沒有哪個二叉搜索樹后續(xù)遍歷結(jié)果是這個序列。

  • 我們必須先知道二叉搜索樹的一些基本特性,在之前的文章:二叉查找樹實現(xiàn)原理對二叉搜索樹進行的詳細的說明,已經(jīng)案例分析,在二叉搜索樹中如下兩個性質(zhì):

    • 對于樹中每個節(jié)點X,左子樹中所有項小于X中的項
    • 而右子樹中的所有元素都大于X中的項目
  • 分析:

    • 因為是后續(xù)遍歷,因此根節(jié)點在末尾,左移8 是根
    • 數(shù)組分兩部分,前面左子樹節(jié)點比如比根節(jié)點小
    • 后面右子樹節(jié)點必然比根節(jié)點大
    • 第二個7,4,6,5 ,是中間小兩邊大不存在這種情況
    • 判斷完左右子樹都符合要求,則分別將左右子樹當成完整的樹依次執(zhí)行以上步驟,遞歸實現(xiàn)。
    • 如上分析有如下實現(xiàn):
/*** 判斷給定序列是否二叉查找樹后續(xù)遍歷* @author liaojiamin* @Date:Created in 18:22 2021/4/2*/ public class ValidateRightFirst {public static boolean validateRightList(int[] binaryNodeList){if(binaryNodeList == null || binaryNodeList.length <= 1){return false;}return validateRightList(binaryNodeList, 0, binaryNodeList.length-1);}public static boolean validateRightList(int[] binaryNodeList, int start, int end){if(binaryNodeList == null|| start >= end){return false;}int root = binaryNodeList[end];int middlePosition = 0;for (int i = start; i < end-1; i++) {if(binaryNodeList[i] > root){middlePosition = i;break;}}for(int i = middlePosition; i< end-1;i++ ){if(binaryNodeList[i] < root){return false;}}boolean left = true;if(middlePosition > 0){left = validateRightList(binaryNodeList, start, middlePosition-1);}boolean right = true;if(middlePosition < end -1){right = validateRightList(binaryNodeList, middlePosition, end-1);}return left& right;}public static void main(String[] args) {int[] binaryNodeList = {5,7,6,9,11,10,8};System.out.println(validateRightList(binaryNodeList));} }

上一篇:數(shù)據(jù)結(jié)構(gòu)與算法-- 廣度優(yōu)先打印二叉樹
下一篇:數(shù)據(jù)結(jié)構(gòu)與算法-- 二叉樹中和為某一值的路徑

總結(jié)

以上是生活随笔為你收集整理的数据结构与算法-- 二叉树后续遍历序列校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。