新聞中心
本篇內(nèi)容主要講解“Java如何判斷一個(gè)數(shù)組是否為后序遍歷結(jié)果”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java如何判斷一個(gè)數(shù)組是否為后序遍歷結(jié)果”吧!
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供歷城網(wǎng)站建設(shè)、歷城做網(wǎng)站、歷城網(wǎng)站設(shè)計(jì)、歷城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、歷城企業(yè)網(wǎng)站模板建站服務(wù),10多年歷城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
輸入一個(gè)整數(shù)數(shù)組,判斷該數(shù)組是不是某二元查找樹的后序遍歷的結(jié)果。如果是返回true,否則返回false。
思路一:
中序遍歷為增長(zhǎng)數(shù)組,判斷是否矛盾
思路二:
如5、7、6、9、11、10、8
代碼編寫具體思路:
1.找到第一個(gè)大于根節(jié)點(diǎn)的數(shù),即9,所以9之后的為右子樹
2.如果右子樹的值都大于根節(jié)點(diǎn)8,則符合
3.遞歸法分別判斷是否左子樹和右子樹都符合這種特點(diǎn)。
package com.lifeibigdata.algorithms.blog; import java.util.Arrays; /** * * 5、7、6、9、11、10、8 * 8 / \ 6 10 / \ / \ 5 7 9 11 */ public class SearchTree { public static void main(String[] args) { // int[] a = {5,7,6,9,11,10,8}; //true int a[] = {7, 4, 6, 5} ; //false System.out.println(searchTree(a,a.length)) ; } static boolean searchTree(int[] a,int length){ if (a == null || length <= 0){ return false; } boolean flag = true; int root = a[length - 1]; int i = 0; while (a[i] < root){ i++; //得到左子樹和右子樹的分界線,a[i]為右子樹第一個(gè) } int j = i; for (;j < length - 1; ++j){ if (a[j] < root){ flag = false; } } if (i > 0){ searchTree(a,i); } if (i < length -1){ searchTree(Arrays.copyOfRange(a,i,length -1),length -i - 1); } return flag; } }
到此,相信大家對(duì)“Java如何判斷一個(gè)數(shù)組是否為后序遍歷結(jié)果”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章名稱:Java如何判斷一個(gè)數(shù)組是否為后序遍歷結(jié)果
文章鏈接:http://ef60e0e.cn/article/jojijd.html