创建二叉树(链式存储结构)要注意:
1 malloc开辟相应的空间。2创建二叉树是,涉及到修改二叉树的值,参数传递为&T。
附代码:
#include"C:\Users\Administrator\Desktop\BASEDEFINE.cpp"
ElemType ch;
typedef struct BiTreeNode
{
ElemType data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode,*BiTree;
Status Visit(ElemType e)
{
printf("%c",e);
return Ok;
}
Status CreateTree(BiTree &t)//传引用!!!!!!!!
{
scanf("%c",&ch);
if(ch=='#')t=NULL;
else
{
t=(BiTree)malloc(sizeof(BiTreeNode));
t->data=ch;
CreateTree(t->lchild);
CreateTree(t->rchild);
}
return Ok;
}
Status PreOrderTraverseTree(BiTree t,Status (*Visit)(ElemType e))
{
if(t!=NULL)
{
Visit(t->data);
PreOrderTraverseTree(t->lchild,Visit);
PreOrderTraverseTree(t->rchild,Visit);
}return Ok;
}
int main()
{
BiTree t;
CreateTree(t);
PreOrderTraverseTree(t,Visit);
return Ok;
}
前天在图书馆借了一本关于数据结构的书,其中一个题是统计二叉树的度为2的节点个数,和遍历是同一种情况,稍微修改即可解决,轻松加愉快。
附代码:
Status PreOrderTraverseTree(BiTree t)
{
if(t!=NULL)
{
if(t->lchild&&t->rchild)i++;
PreOrderTraverseTree(t->lchild);
PreOrderTraverseTree(t->rchild);
}return Ok;
}
错误之处,不吝赐教。