建立一颗多叉树

来源:互联网 发布:往复式和旋转式 知乎 编辑:程序博客网 时间:2024/05/29 19:30

      多叉树的建立是很复杂的,因为分支数目不确定,但是我们可以知道多叉树和二叉树其实是可以转化的,我们可以将其转化为二叉树。下面就是使用“子女-兄弟链法”建立的一颗树。


//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:Typedata;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;TypeRefvalue;};

建立一颗多叉树有很多种方法,我这里选择的是“子女-兄弟链“法,上面是实现:

这里是先序建立的//RAD#E##BC#F##GHK#####
树的大致形态如下:


1 0
原创粉丝点击