同樣的問題,當時忘了衛星資料的模板了
//二叉樹的模板類
#include using namespace std;
template struct node;
template class tree_class;
template tree_class::tree_class()
template //這裡用的是指標的引用,然後就直接把des的指標改變,並且有個parent屬性存在,所以至少要在函式裡對下一層進行判斷了。我覺得也可以用返回指標的方式,就需要在呼叫的時候先判斷到節點了嗎
void tree_class::nodecpy(node* &des,node* &src)else
if(src->right!=null)else
return;
}template tree_class::tree_class(tree_class& arg)
template void tree_class::nodedel(node* arg)
return ;
}template tree_class::~tree_class()
template bool tree_class::insert(const type & value) //一直搜尋到了二叉樹的最下層節點,最後tmp指到了這個null位置,tmp_p是這個null位置的父節點
tmp = new node;
tmp->value = value;
tmp->left = null;
tmp->right = null;
tmp->parent = tmp_p;
if(tmp_p==null)//無元素
else if(tmp_p->value>value)
else if(tmp_p->valueright = tmp;
return true;
} else
else return;
}template void tree_class::showall()
template node* tree_class::searchnode(node* p,const type & value)
template node* tree_class::search(const type & value)
return tmp;
}template node* tree_class::max()
return tmp;
}template node* tree_class::minnode(node* arg)
return tmp;
}template node* tree_class::min()
template node* tree_class::replace(node* des,node* src)else if(des->parent->right==des)
if(src!=null) src->parent = des->parent;
return des;
/* if(des->left!=null)
if(des->right!=null)*/
}template bool tree_class::delete(const type & value)
else if(tmp->right==null)
else
//然後再拼接摘出來的這個節點左邊子樹
tmp = replace(tmp,right_min);
right_min->left = tmp->left;
tmp->left->parent = right_min;
delete tmp; }
} int main()
二叉樹模板
最近學習的,關於二叉樹的建立,前中後序遍歷,和求二叉樹高等。include includetypedef struct node node typedef struct tree void preorder node node 先 前 序遍歷 根 左 右 void inorder node node...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
c 實現鏈式二叉樹類模板
include include using namespace std 非遞迴後續遍歷的標誌位 enum tags 提前宣告非遞迴後續遍歷的棧類 template class t class stackelement 提前宣告二叉樹類模板 template class t class binaryt...