我在做这个任务:http://www.cs.colostate.edu/~anderson/ct310/index.html/doku.php?id=assignments:assignment_2二叉树在Javascript
我建立在Javascript二叉树。基本上它是一个关系树,我们有这个树类需要3个参数:数据,左边的孩子,右边的孩子。左边的&右边的孩子只是存储在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方法上得到一个堆栈溢出。我的教授说要在if语句中使用this.Left(),因为当你递归时它会在未定义时失败。
任何想法有什么不对?
您的意思是:如果(this.left()) - 没有this.tree()?在构造函数中没有this.tree :) – mfeineis 2012-02-17 15:37:31
对于我来说,称这个类为“tree”而不是“node”是很奇怪的,因为tree是较大结构的名称。我会调用由两个指针构成的二叉树结构。 BA-屁股-CH。 – nwellcome 2012-02-17 15:49:38