建立一颗多叉树

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


//Tree.h
#pragma once
#include
using namespace std;

template
class Tree;

template
class TreeNode
{
	friend class Tree;
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	* firstchild;
	TreeNode	* nextsibling;
};

template
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*& t)
	{
		Type item;
		cin >> item;
		if (item == Refvalue)
		{
			t = NULL;
			return;
		}
		else
		{
			t = new TreeNode(item);
			create(t->firstchild);
			create(t->nextsibling);
		}
	}

	bool empty()
	{
		return root == NULL;
	}

	void PreOder(TreeNode*& t)
	{
		if (t == NULL)
			return;
		else
		{
			cout << t->data << " "; PreOder(t->firstchild);
			PreOder(t->nextsibling);
		}
	}
private:
	TreeNode	*root;
	Type				Refvalue;
};


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

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

建立一颗多叉树_第1张图片

你可能感兴趣的:(我的成长)