因为树和森林都可以与二叉树相互转化,所以采用二叉链表的存储方式表示树和森林容易在计算机中实现
共有10个节点,则有11个空指针
树的二叉链表(孩子-兄弟)存储表示
*fristChild指向该结点的第一个孩子节点,*nextSibling指向该结点的兄弟节点。
虽然类似于二叉树的左右孩子节点指针,但是功能不同
#define ElemType char
typedef struct TreeNode
{
ElemType data;
struct TreeNode *fristChild;
struct TreeNode *nextSibling;
}TreeNode;
typedef struct Tree
{
TreeNode *root;
ElemType refvalue;
}Tree;
初始化
void InitTree(Tree *tree,ElemType ref)
{
tree->root = NULL;
tree->refvalue = ref;
}
创建树
与二叉树的创建相同,因为本身就是用二叉树来存储树或森林
void CreateTree(Tree *tree, char *str)
{
CreateTree(tree,tree->root,str);
}
void CreateTree(Tree *tree, TreeNode *&t, char