二叉树的顺序表示法("/"代表空指针)
对于图6.16中的二叉树,相应的顺序表示结点表示如下:
AB/D//CEG///FH//I//(数据结构课本中的135页)
从二叉树中用printhelp函数打印出来,printhelp函数的C++算法代码:
1 template<class Elem> 2 void printhelp(BinNode*subroot) 3 { 4 if(subroot==NULL) {cout<<"\\";return;} 5 cout<<subroot->value(); 6 printhelp(subroot->left()); 7 printhelp(subroot->right()); 8 9 }
而从顺序表中解码为二叉树,相应的convert函数C++算法代码:
template <class Elem>
BinNode<Elem>* convert(char* inlist) {
int curr = 0;
return converthelp(inlist, curr);
}
// As converthelp processes the node list, curr is
// incremented appropriately.
template <class Elem>
BinNode<Elem>* converthelp(char* inlist,
int& curr) {
if (inlist[curr] == ’/’) {
curr++;
return NULL;
}
BinNode<Elem>* temp = new BinNode(inlist[curr++],
NULL, NULL);
temp->left = converthelp(inlist, curr);
temp->right = converthelp(inlist, curr);
return temp;
}
重点:::注意比较读码和解码之间的异同。
浙公网安备 33010602011771号