#include#include using namespace std; string str1 = "ABDH#K###E##CFI###G#J##"; int index = 0; template class ThreadlinkNode { public: T data; ThreadlinkNode *lchild, *rchild; ThreadlinkNode(); ThreadlinkNode(T e); }; template ThreadlinkNode ::ThreadlinkNode(T e) { data = e; lchild = NULL; rchild = NULL; } template ThreadlinkNode ::ThreadlinkNode() { lchild = NULL; rchild = NULL; } // template class ThreadlinkTree { private: ThreadlinkNode *root; ThreadlinkNode * CreatePreOrderlinkTree(); void MidOrderlinkTree(ThreadlinkNode *r); public: ThreadlinkTree(); void MidOrderlinkTreeTest(); }; template void ThreadlinkTree ::MidOrderlinkTreeTest() { MidOrderlinkTree(root); cout << endl; } template void ThreadlinkTree ::MidOrderlinkTree(ThreadlinkNode *r) { if(r == NULL) return; MidOrderlinkTree(r->lchild); cout << r->data << " "; MidOrderlinkTree(r->rchild); } template ThreadlinkNode * ThreadlinkTree ::CreatePreOrderlinkTree() { ThreadlinkNode *p = NULL; T ch; ch = str1[index++]; if(ch == '#') return p; else { p = new ThreadlinkNode ; p->data = ch; p->lchild = CreatePreOrderlinkTree(); p->rchild = CreatePreOrderlinkTree(); } return p; //此处返回p的原因为保证右子树完整,以字符串中的H值为例,当值K的右孩子判断完毕后 } //如果不返回p则将使得H右孩子无值。 template ThreadlinkTree ::ThreadlinkTree() { root = CreatePreOrderlinkTree(); //用构造函数先序创建二叉树。 } void test03() { ThreadlinkTree tree; cout << "中序遍历为:" << endl; tree.MidOrderlinkTreeTest(); } int main() { test03(); system("pause"); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)