建立一颗多叉树
2016-03-18 22:48
423 查看
多叉树的建立是很复杂的,因为分支数目不确定,但是我们可以知道多叉树和二叉树其实是可以转化的,我们可以将其转化为二叉树。下面就是使用“子女-兄弟链法”建立的一颗树。
建立一颗多叉树有很多种方法,我这里选择的是“子女-兄弟链“法,上面是实现:
这里是先序建立的//RAD#E##BC#F##GHK#####
树的大致形态如下:
//Tree.h #pragma once #include<iostream> using namespace std; template<class Type> class Tree; template<class Type> class TreeNode { friend class Tree<Type>; public: TreeNode() :data(Type()), nextsibling(NULL), firstchild(NULL) {} TreeNode(Type d, TreeNode* L = NULL, TreeNode* C = NULL) :data(d), nextsibling(L), firstchild(C) {} ~TreeNode() {} private: Type data; TreeNode<Type> * firstchild; TreeNode<Type> * nextsibling; }; template<class Type> class Tree { public: Tree(Type Ref) : root(NULL) ,Refvalue(Ref) { root = NULL; } public: void create() { create(root); } void show() { cout << "PreOder:"; PreOder(root); cout << endl; } protected: void create(TreeNode<Type>*& t) { Type item; cin >> item; if (item == Refvalue) { t = NULL; return; } else { t = new TreeNode<Type>(item); create(t->firstchild); create(t->nextsibling); } } bool empty() { return root == NULL; } void PreOder(TreeNode<Type>*& t) { if (t == NULL) return; else { cout << t->data << " "; PreOder(t->firstchild); PreOder(t->nextsibling); } } private: TreeNode<Type> *root; Type Refvalue; };
建立一颗多叉树有很多种方法,我这里选择的是“子女-兄弟链“法,上面是实现:
这里是先序建立的//RAD#E##BC#F##GHK#####
树的大致形态如下:
相关文章推荐
- 1004-格子中输出
- android studio NDK-JNI调用
- hdu 5640 King's Cake(模拟)
- 输出二叉树第n个节点
- 改变Edit的光标(使用CreateCaret,ShowCaret和LoadBitmap三个API函数)
- 使用T-SQL找出执行时间过长的作业
- Linux内核分析学习笔记(一)
- Linux内核设计第四周——扒开系统调用三层皮
- 内存的静态分配和动态分配的区别【转】
- JUnit 3.8 通过反射测试私有方法
- 欢迎使用CSDN-markdown编辑器
- 蒙特卡洛算法
- 蒙特卡洛算法
- 蒙特卡洛算法
- STM32canopen调试
- hdu 1520 Anniversary party(树形dp)
- linux下归档
- 进程间通信机制IPC
- 写在前面
- 基于JUnit3.8的一个简单的测试程序