File tree Expand file tree Collapse file tree 1 file changed +90
-0
lines changed
validate-binary-search-tree Expand file tree Collapse file tree 1 file changed +90
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for a binary tree node.
3+ * class TreeNode {
4+ * val: number
5+ * left: TreeNode | null
6+ * right: TreeNode | null
7+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+ * this.val = (val===undefined ? 0 : val)
9+ * this.left = (left===undefined ? null : left)
10+ * this.right = (right===undefined ? null : right)
11+ * }
12+ * }
13+ */
14+
15+ /**
16+ 1차 시도
17+
18+ function isValidBST(root: TreeNode | null): boolean {
19+ let result = true;
20+
21+ function validate(node: TreeNode) {
22+ if (node.left) {
23+ if (node.val > node.left.val) {
24+ validate(node.left);
25+ } else {
26+ result = false;
27+ }
28+ }
29+
30+ if (node.right) {
31+ if (node.val < node.right.val) {
32+ validate(node.right);
33+ } else {
34+ result = false;
35+ }
36+ }
37+ }
38+
39+ validate(root);
40+ return result;
41+ }
42+ */
43+
44+ interface TreeNode {
45+ val : number ;
46+ left : TreeNode ;
47+ right : TreeNode ;
48+ }
49+
50+ /** 2차 시도 실패 */
51+ function isValidBST ( root : TreeNode | null ) : boolean {
52+ let result = true ;
53+
54+ function validate ( node : TreeNode , lstandard ?: number , rstandard ?: number ) {
55+ if ( node . left ) {
56+ if ( lstandard !== undefined && lstandard > node . left . val ) {
57+ result = false ;
58+ }
59+
60+ if ( rstandard !== undefined && rstandard < node . left . val ) {
61+ result = false ;
62+ }
63+
64+ if ( node . val > node . left . val ) {
65+ validate ( node . left , undefined , node . val ) ;
66+ } else {
67+ result = false ;
68+ }
69+ }
70+
71+ if ( node . right ) {
72+ if ( lstandard !== undefined && lstandard > node . right . val ) {
73+ result = false ;
74+ }
75+
76+ if ( rstandard !== undefined && rstandard < node . right . val ) {
77+ result = false ;
78+ }
79+
80+ if ( node . val < node . right . val ) {
81+ validate ( node . right , node . val , undefined ) ;
82+ } else {
83+ result = false ;
84+ }
85+ }
86+ }
87+
88+ validate ( root ! ) ;
89+ return result ;
90+ }
You can’t perform that action at this time.
0 commit comments