/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<Integer> list = new ArrayList<Integer>();
public boolean isValidBST(TreeNode root) {
inorder(root);
for (int i = 0; i < list.size() - 1; i++) {
if(list.get(i) >= list.get(i+1))
return false;
}
return true;
}
public void inorder(TreeNode node) {
if(node != null) {
inorder(node.left);
list.add(node.val);
inorder(node.right);
}
}
}
- 처음에는 DFS로 하려고 했는데, val을 비교하는 과정이 복잡해져서, inorder 순회해서 list에 넣었음
- inorder로 순회하며 list에 val을 넣으면 valid한 B-Tree라면 list에 val이 오름차순으로 들어있을 것임 => 오름차순인지 검사해서 맞으면 true, 아니면 false
- inorder : 왼쪽 > 루트 > 오른쪽
- preorder : 루트 > 왼쪽 > 오른쪽
- postorder : 왼쪽 > 오른쪽 > 루트
B-Tree 순회방법 참고 => https://youtu.be/QN1rZYX6QaA
'JAVA > leetcode' 카테고리의 다른 글
[LeetCoed] BST - Search in a Binary Search Tree (0) | 2021.08.10 |
---|---|
[LeetCode Medium] BST - Binary Search Tree Iterator (0) | 2021.08.10 |
[LeetCode] Two Sum II - Two Pointer (0) | 2021.08.09 |
[LeetCode] Array Partition I (0) | 2021.08.09 |
[LeetCode] Reverse String - Two-pointer (0) | 2021.08.09 |