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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

剑指offer(Java实现) 二叉搜索树的后序遍历序列

發布時間:2025/4/16 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer(Java实现) 二叉搜索树的后序遍历序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。

解題思路

先找到右子樹的開始位置,然后分別進行左右子樹遞歸處理。

(1)尋找右子樹的開始位置

? 在二叉搜索樹的后序遍歷結果中,最后一個元素為這棵樹的根節點;因此,將最后一個元素作為比較的標準值,將結果數組分為兩段,若后序遍歷結果正確,則比最后一個元素小的那一段連續數組則為該樹的左子樹,而比最后一個元素大的那一段連續數組則為該樹的右子樹。

? 因此,我們可以得到右子樹的開始位置,即出現的第一個比 最后一個元素 大的元素的位置。

(2)后半段數組的校驗

? 如果后半段數組中,有出現比 最后一個元素 大的元素,則該結果不是二叉搜索樹的后序遍歷結果,返回為 false。

(2)遞歸處理

? 遞歸處理,直到沒有出現 false,最終走到底,返回 true。

代碼實現

import java.util.Arrays;public class Solution {public boolean VerifySquenceOfBST(int [] sequence) {if (null == sequence || 0 == sequence.length) {return false;}int restart = 0;int length = sequence.length;for (int i = 0; i < length - 1; i++) {if (sequence[i] < sequence[length - 1]) {restart++;}}if (0 == restart) {VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, length - 1));} else {for (int i = restart; i < length - 1; i++) {if (sequence[i] <= sequence[length - 1]) {return false;}}VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, restart));VerifySquenceOfBST(Arrays.copyOfRange(sequence, restart, length - 1));}return true;} }

總結

以上是生活随笔為你收集整理的剑指offer(Java实现) 二叉搜索树的后序遍历序列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。