This is a project written in go that accepts a binary tree represented in JSON and outputs an ASCII diagram for it as well as if it's a valid BST or not. You can also generate valid BSTs with a defined height.
go run main.go -validate '{"value":10,"left":{"value":5,"left":{"value":3},"right":{"value":7}},"right":{"value":15,"right":{"value":18}}}'
┌── 18
┌── 15
┌── 10
┌── 7
└── 5
└── 3
2024/03/05 19:58:01 The binary tree is a valid BST
go run main.go -tree '{"value":10,"left":{"value":5,"left":{"value":3},"right":{"value":7}},"right":{"value":15,"right":{"value":1}}}'
┌── 1
┌── 15
┌── 10
┌── 7
└── 5
└── 3
2024/03/05 19:57:24 The binary tree is not a valid BST
go run main.go -generate 4
{
"value": 8,
"left": {
"value": 0,
"left": {
"value": -4,
"left": {
"value": -6
},
"right": {
"value": -2
}
},
"right": {
"value": 4,
"left": {
"value": 2
},
"right": {
"value": 6
}
}
},
"right": {
"value": 16,
"left": {
"value": 12,
"left": {
"value": 10
},
"right": {
"value": 14
}
},
"right": {
"value": 20,
"left": {
"value": 18
},
"right": {
"value": 22
}
}
}
}