데이터 구조 면접 문제 1.2.8 - 정수 서열 이 이원 검색 트 리 의 뒷 순 서 를 옮 겨 다 니 는 지 판단 합 니 다.

package questions;

/**
 * @title                      
 * @question         ,                      。     true,    false。<br>
 *               5、7、6、9、11、10、8,                   :<br>
 *           ....8<br>
 *           .../ \<br>
 *           ..6 . 10<br>
 *           ./\ . /\<br>
 *           5 7 . 9 11<br>
 *               true。<br>
 *               7、4、6、5,                  ,    false。<br>
 * @analysis   :    trilogy    ,             。<br>
 *                      ,            。          ,                 ;
 *                                   
 *           ,            ,                。       ,           
 *           ,           、              。
 * @author Sam
 *
 */
public class Ex1o2o8 {
	public static void main(String[] args) {
		int[] sequence = { 5, 7, 6, 9, 11, 10, 8 };
		System.out.println(sequenceOfBST(sequence, 0, sequence.length));
		sequence = new int[] { 7, 4, 6, 5 };
		System.out.println(sequenceOfBST(sequence, 0, sequence.length));
	}

	private static boolean sequenceOfBST(int[] sequence, int start, int end) {
		if (null == sequence || end - start <= 0) {
			return false;
		}
		int root = sequence[end - 1];//     
		int index = start;
		for (int i = start; i < end - 1; i++) {//             
			if (sequence[i] > root) {
				index = i;
				break;
			}
		}
		for (int i = index; i < end - 1; i++) {//          root
			if (sequence[i] < root) {
				return false;
			}
		}
		boolean left = true;
		if (index > start) {
			left = sequenceOfBST(sequence, start, index);
		}
		boolean right = true;
		if (index < end - 1) {
			right = sequenceOfBST(sequence, index, end - 1);
		}
		return left && right;
	}
}

좋은 웹페이지 즐겨찾기