我在做這個任務: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