关于二叉树几个题目。

Brightzliu 2006-12-11 02:31:48
1.已知非空二叉树采用二叉链表存储结构,根结点为T。请写出非递归算法,该算法打印数据信息为item的结点的所有祖先结点。假设数据信息为item的结点不多余一个。

2.已知具有n个结点的二叉树的前序序列和中序序列分别问PREOD[0...n-1]与INOD[0...n-1],并且各结点的数据值均不相同。试写一非递归算法生成二叉树的二叉链表结构。
...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaaaaaa 2006-12-12
  • 打赏
  • 举报
回复
第一题的代码, 写得不是很好, 你参考吧, 关键是设置标志位与堆栈的操作
void ancestor(node* root, int item){
if(root == NULL)
return;
int ns = 0; //栈顶指针
node* p = root;
stack[ns] = p; //保存遍历路径
color[ns++] = 0; //0 表示未检测, 1表示左子树被检测,2表示左右都被检测
while(1){
if(p->value == item){
print();
return;
}

if(p->lchild != NULL && (color[ns-1] < 1)){
color[ns-1] = 1;
p = p->lchild;
stack[ns] = p;
color[ns++] = 0;
continue;
}

if(p->rchild != NULL && (color[ns-1] < 2)){
color[ns-1] = 2;
p = p->rchild;
stack[ns] = p;
color[ns++] = 0;
continue;
}

if(ns == 0)
return;

p = stack[--ns];
}
}
LiChenYue 2006-12-11
  • 打赏
  • 举报
回复
1.已知非空二叉树采用二叉链表存储结构,根结点为T。请写出非递归算法,该算法打印数据信息为item的结点 | 的所有祖先结点。假设数据信息为item的结点不多余一个。
|
是树吧?----| 采用遍历。
LiChenYue 2006-12-11
  • 打赏
  • 举报
回复
1.已知非空二叉树采用二叉链表存储结构,根结点为T。请写出非递归算法,该算法打印数据信息为item的结点| 的所有祖先结点。假设数据信息为item的结点不多余一个。
|
是树吧?----| 采用遍历。

2.已知具有n个结点的二叉树的前序序列和中序序列分别问PREOD[0...n-1]与INOD[0...n-1],并且各结点的数据值均不相同。试写一非递归算法生成二叉树的二叉链表结构。

我只知道递归的,书上有,COPY一下啦!

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧