यूनिवैल्यूड बाइनरी सर्च ट्री
एक बाइनरी सर्च ट्री यूनिवैल्यूड है यदि ट्री में हर नोड का मान समान है।
समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो BST की जड़ लेता है और true वापस करता है यदि और केवल यदि दिया गया ट्री यूनिवैल्यूड है, अन्यथा false।
उदाहरण के लिए, यदि ट्री के नोड्स हैं -
const input = [5, 5, 5, 3, 5, 6];
तो आउटपुट होना चाहिए -
const output = false;
उदाहरण
इसके लिए कोड होगा -
class Node{
constructor(data) {
this.data = data;
this.left = null;
this.right = null;
};
};
class BinarySearchTree{
constructor(){
this.root = null;
}
insert(data){
var newNode = new Node(data);
if(this.root === null){
this.root = newNode;
}else{
this.insertNode(this.root, newNode);
};
};
insertNode(node, newNode){
if(newNode.data < node.data){
if(node.left === null){
node.left = newNode;
}else{
this.insertNode(node.left, newNode);
};
} else {
if(node.right === null){
node.right = newNode;
}else{
this.insertNode(node.right,newNode);
};
};
};
};
const BST = new BinarySearchTree();
BST.insert(5);
BST.insert(5);
BST.insert(5);
BST.insert(3);
BST.insert(5);
BST.insert(6);
const isUnivalued = (root) => {
const helper = (node, prev) => {
if (!node) {
return true;
}
if (node.data !== prev) {
return false;
}
let isLeftValid = true;
let isRightValid = true;
if (node.left) {
isLeftValid = helper(node.left, prev);
}
if (isLeftValid && node.right) {
isRightValid = helper(node.right, prev);
}
return isLeftValid && isRightValid;
}
if (!root) {
return true;
}
return helper(root, root.data);
};
console.log(isUnivalued(BST.root));
आउटपुट
कंसोल में आउटपुट होगा -
false