我想實現一個AVL樹,並且不確定插入和跟蹤每個節點的父項的最佳方法。這是教育,所以請不要建議「使用提升」:)在AVL樹上設置父項
這編譯,但我不相信它的正確性或它是最好的方法。 具體這個
insert(someNumber,root,root);
另外,我會重做高度一部分,當我重新平衡和移樹。
我插入這樣
myTree.insert(someNumber);
這裏是方法。我不確定我的第二個參數應該在這裏。我會認爲NULL,但編譯器不喜歡(不同的函數定義)。
void Tree::insert(int someNumber){
insert(someNumber,root,root);
}
這裏是我的插入
void Tree::insert(int someNumber,Node*& subTreeRoot,Node*& parent){
if(subTreeRoot==NULL)
{
subTreeRoot = new Node(someNumber,parent);
if(subTreeRoot->myParent)
}
else if (someNumber<subTreeRoot->myNumber)
{
if((subTreeRoot->right==NULL)||((subTreeRoot->left!=NULL)&&(subTreeRoot->right!=NULL)))
subTreeRoot->height++;
insert(someNumber,subTreeRoot->left,subTreeRoot);
}
else
{
if((subTreeRoot->left==NULL)||((subTreeRoot->left!=NULL)&&(subTreeRoot->right!=NULL)))
subTreeRoot->height++;
insert(someNumber,subTreeRoot->right,subTreeRoot);
}
}
-
我一直在測試相當多。你的斷言看起來不錯。我真的很喜歡eclipse cdt的單元測試插件或框架。 這就是說,我不知道這回答有關父母的一點。我想我會進行重新平衡並通過父母測試。 – Maestro1024 2010-08-06 00:56:47