[면접] 두 갈래 나무가 두 갈래 정렬 나무인지 아닌지 판단하다
두 갈래 나무를 정하고, 한 그루 나무가 두 갈래 정렬 나무인지 아닌지를 어떻게 판단하는가.트리 결점의 정의는 다음과 같다.
class TreeNode {
int key;
TreeNode left;
TreeNode right;
public TreeNode(int key) {
this.key = key;
}
}
2. 문제 풀이 사고방식
두 갈래 정렬 트리의 성질에 따라 중서열을 반복할 때 현재 결점의 값은 항상 전구 결점의 값보다 크다. 전구 결점의 값을 반복할 때 보존해야 판단을 할 수 있고 이런 사고방식을 바탕으로 문제를 풀 수 있다.
코드
이상의 문제풀이 사고방식(반복할 때 두 갈래 정렬 트리의 성질을 이용)에 따라 다음과 같은 코드를 얻을 수 있다.
/**
* Created by LEESF on 2016/9/8.
*/
class TreeNode {
int key;
TreeNode left;
TreeNode right;
public TreeNode(int key) {
this.key = key;
}
}
public class IsBSTree {
static boolean flag = true;
static int last = Integer.MIN_VALUE;
public static boolean isBSTree(TreeNode root) {
if (root.left != null && flag)
isBSTree(root.left);
if (root.key < last)
flag = false;
last = root.key;
if (root.right != null && flag)
isBSTree(root.right);
return flag;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.