编程实现二叉搜索树来记录考试成绩的分布。
解题:
修改 Node 对象, 为其增加一个记录成绩出现频次的成员。
function Node(data,left,right){
this.data = data;
this.count = 1;
this.left = left;
this.right = right;
}
同时还需要一个方法, 当在 BST 中发现某成绩时, 需要将出现的次数加 1, 并且更新该节点。
function update(data){
var grade = this.findup(data);
grade.count++;
return grade;
}
最后创建一棵二叉搜索树并将数据逐一插入。
var gradedistro = new BST();
for (var i = 0; i < grades.length; ++i) {
var g = grades[i];
var grade = gradedistro.findup(g);
if (grade == null) {
gradedistro.insert(g);
} else {
gradedistro.update(g);
}
}