考研数据结构题目,达人请进
某二叉树后序遍历序列为ΦΦAΦΦEΦΦCDB,其中Φ代表空格,表示空二叉树。问能否以此序列作为输入,后序创建二叉树?若不能,说明理由。若能,画出对应二叉树。
[解决办法]
通过一个存储二叉树的堆栈来实现...
伪代码大体如下:
Stack tree_stack;while(input=get_input()){//一个一个地读取输入 if(isblank(input)){//输入是空格 tree t=maketree(input);//构建一棵空二叉树 tree_stack.push(t); } else{ tree t1=tree_stack.pop(); tree t2=tree_stack.pop(); tree t3=merge_tree(t1,t2);//以输入为根结点合并t1和t2 tree_stack.push(t3); }}tree result=tree_stack.pop();
[解决办法]
嗯,同意,可以创建.代码如下,仅供参考:
typedef struct bitnode
{char data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
bitnode *creatbitree(bitnode *p)
{char ch;
ch=getchar();
if(ch=='Φ') p=NULL;
else
{p=(bitnode *)malloc(sizeof(bitnode));
p->lchild=creatbitree(p->lchild);
p->data=ch;
p->rchild=creatbitree(p->rchild);}
return p;
}