首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

考研数据结构题目,达人请进,该如何解决

2012-02-05 
考研数据结构题目,达人请进某二叉树后序遍历序列为ΦΦAΦΦEΦΦCDB,其中Φ代表空格,表示空二叉树。问能否以此序

考研数据结构题目,达人请进
某二叉树后序遍历序列为ΦΦAΦΦEΦΦCDB,其中Φ代表空格,表示空二叉树。问能否以此序列作为输入,后序创建二叉树?若不能,说明理由。若能,画出对应二叉树。

[解决办法]
通过一个存储二叉树的堆栈来实现...
伪代码大体如下:

C/C++ code
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;
}

热点排行