【人搜网的笔试题】跟树有关的

猪头小哥 2012-09-20 11:09:19
一棵树的节点定义格式如下:
struct Node{
Node* parent;
Node* firstChild; // 孩子节点
Node* sibling; // 兄弟节点
}
要求非递归遍历该树。
求具体的思路。
原文出自http://blog.csdn.net/v_july_v/article/details/7974418第四题。
...全文
320 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hotpos 2012-09-21
  • 打赏
  • 举报
回复
一棵树的节点定义格式如下:
struct Node{
Node* parent;
Node* firstChild; // 孩子节点
Node* sibling; // 兄弟节点
}
要求非递归遍历该树。
思路:采用队列存储,来遍历节点。

思路在题下面都有了么不是...
猪头小哥 2012-09-21
  • 打赏
  • 举报
回复
你这伪代码的前提是树已经初始化,已经存在,是吧。
[Quote=引用 2 楼 的回复:]

递归无非就是利用函数调用的堆栈来模拟栈的数据结构而已。 不用递归就手动实现一个栈呗。
其中一种实现伪代码如下:

void ScanTree(Node* pRoot)
{
if(pRoot == NULL)
return;

将 pRoot 放到一个链表(也可以是其它容器结构) 中
while(链表不为空)
{
从链表中取……
[/Quote]
ouPuso 2012-09-21
  • 打赏
  • 举报
回复
不让递归那就用栈吧
www_adintr_com 2012-09-21
  • 打赏
  • 举报
回复
递归无非就是利用函数调用的堆栈来模拟栈的数据结构而已。 不用递归就手动实现一个栈呗。
其中一种实现伪代码如下:

void ScanTree(Node* pRoot)
{
if(pRoot == NULL)
return;

将 pRoot 放到一个链表(也可以是其它容器结构) 中
while(链表不为空)
{
从链表中取出一个元素 pNode
打印 pNode 中的数据信息
if(pNode->firstChild != NULL)
{
将 pNode->firstChild 放入链表中
}

if(pNode->sibling != NULL)
{
将 pNode->sibling 放入链表中
}
}
}
猪头小哥 2012-09-21
  • 打赏
  • 举报
回复
是有了,但是还不是很会,这方面不行。
[Quote=引用 5 楼 的回复:]

一棵树的节点定义格式如下:
struct Node{
Node* parent;
Node* firstChild; // 孩子节点
Node* sibling; // 兄弟节点
}
要求非递归遍历该树。
思路:采用队列存储,来遍历节点。

思路在题下面都有了么不是...
[/Quote]

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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