Я работаю над этим заданием: http://www.cs.colostate.edu/~anderson/ct310/index.html/doku.php?id=assignments:assignment_2Binary Tree в Javascript
Я строй бинарного дерева в JavaScript. В основном это реляционное дерево, у нас есть этот древовидный класс, который принимает 3 аргумента: данные, левый ребенок, правый ребенок. Left & правый ребенок - это только новые объекты дерева, хранящиеся в var.
Вот класс дерево:
function Tree(data, left, right)
{
// pravite data
var data = data;
var leftChild = left;
var rightChild = right;
// public functions
this.getData = function()
{
return data;
}
this.left = function()
{
return leftChild;
}
this.right = function()
{
return rightChild;
}
}
Вот метод ToString()
Tree.prototype.toString = function(indent)
{
var spaces = '';
if (!indent)
{
indent = 0;
}
else{
spaces = spaces*indent;
}
// if the left tree isn't void
if(this.tree().left())
{
this.tree().left().toString(indent+5);
}
if(this.tree().right())
{
this.tree.right().toString(indent+5);
}
print(spaces + this.data);
}
Вот данные я получаю перешел. Мы используем Rhino в командной строке для тестирования.
var abc = new Tree('a', new Tree('b'), new Tree('c'));
abc.toString()
Я получаю стек над потоком по методу toString. Мой профессор говорит использовать this.Left() в выражении if, потому что, когда вы его перезаписываете, он будет терпеть неудачу, если он не определен.
Любые идеи, что не так?
вы имели в виду: если (this.left()) - без this.tree()? В конструкторе нет this.tree :) – mfeineis
Мне странно назвать этот класс «tree» вместо «node», поскольку дерево - это название более крупной структуры. Я бы назвал структуру, состоящую из деревьев с двумя указателями двоичного леса. ба-бам-ч. – nwellcome