에 나는이 임무에 일하고 있어요 : 나는 자바 스크립트에서 이진 트리를 짓고 있어요 http://www.cs.colostate.edu/~anderson/ct310/index.html/doku.php?id=assignments:assignment_2이진 트리 자바 스크립트
. 기본적으로 그것은 관계형 트리입니다. 우리는 데이터, 왼쪽 자식, 오른쪽 자식이라는 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()를 사용한다고 말합니다. 왜냐하면 재귀 할 때 정의되지 않은 경우 실패 할 것이기 때문입니다.
어떤 아이디어가 잘못 되었나요? ASID
가하셨습니까에 ToString를 호출하지 않습니다 경우 (this.left() 참조) - this.tree없이()? 생성자에 this.tree가 없습니다 :) – mfeineis
tree는 큰 구조체의 이름이므로 "node"대신 "tree"클래스를 호출하는 것이 이상합니다. 이진 포레스트라는 두 개의 포인터가있는 나무로 구성된 구조체를 호출 할 것입니다. 바보. – nwellcome