第六章 树和二叉树
int Is_Descendant_C(int u,int v)
int Bitree_Sim(Bitree B1,Bitree B2)次根据栈顶元素的mark域值决定做何种动作.
typedef struct {
int data;
EBTNode *lchild;
EBTNode *rchild;
EBTNode *parent;
enum {0,1,2} mark;
} EBTNode,EBitree;
typedef struct {
int data;
PBTNode *lchild;
PBTNode *rchild;
PBTNode *parent;
} PBTNode,PBitree; .
scanf("%d",&k);
c=0; .
}
void LayerOrder(Bitree T)相比,作了一个修改,不管当前结点是否有左右孩子,都入队列.这样
当树为完全二叉树时,遍历时得到是一个连续的不包含空指针的序列.反之,则序列中会含有空指针.
Status CreateBitree_Triplet(Bitree &T)意:为了能用一个统一的公式计算子孙数目,所以当T为空指针时,要返回-1而不是0.
BTNode *PreOrder_Next(BTNode *p)不是哪儿理解错了
Bitree PostOrder_Next(Bitree p)irstchild) return 1;
for(sd=1,p=[T].firstchild;p;p=p->next)
if((d=SubDepth(p->child))>sd) sd=d;
return sd+1;
}arent) dep++; .
Build_Sub(1,n,1,n); .
}
分析:本算法利用了这样一个性质,即一棵子树在前序和中序序列中所占的位置总是连续的.因此,就可以用起始下标和终止下标来确定一棵子树.Pre_Start,Pre_End,In_Start和In_End分别指示子树在前序子序列里的起始下标,终止下标,和在中序子序列里的起始和终止下标.
typedef struct{
CSNode *ptr;
CSNode *lastchild;
} NodeMsg; tr=(CSNode*)malloc(sizeof(CSNode));
Tree[i].ptr->data=[i].data; arent>=0) arent; astchild)) tr->firstchild=Tree[i].ptr; astchild->nextsib=Tree[i].ptr; astchild=Tree[i].ptr; tr=(CSNode*)malloc(sizeof(CSNode));
Tree[0].data=c;
Tree[0].ptr->data=c;
while((p=getchar())!='^'&&(c=getchar())!='^')
{
Tree[n].ptr=(CSNode*)malloc(sizeof(CSNode));
Tree[n].data=c;
Tree[n].ptr->data=c;
for(k=0;Tree[k].data!=p;k++); ata!=p) return ERROR; tr;
if(!r->firstchild)
r->firstchild=Tree[n].ptr;
else Tree[k].lastchild->nextsib=Tree[n].ptr;
二叉树公式 Tree[k].lastchild=Tree[n].ptr;
Status CreateBiTree_GList(BiTree &T)ata); irstchild;p;p=p->next)
Print_CSTree(p->child,i+1); .
Print_CTree,0); .
}算法另一个改进之处在于加入了广义表格式是否合法的判断.
void PrintGlist_CSTree(CSTree T)ata=c;
i=pos++; irstchild=p;
p->child=pos; irtchild=NULL;
void PrintGList_CTree(CTree T,int i)ata);
if[i].firstchild) //非叶结点
{
printf("(");
for(p=T->firstchild;p;p=p->nextsib)
{
PrintGlist_CSTree(T,p->child);
if(p->nextsib) printf(","); //最后一个孩子后面不需要加逗号
}
printf(")");
}//if
}//PrintGlist_CTree
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论