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

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

2012-09-28 
【人搜网的笔试题】跟树有关的一棵树的节点定义格式如下:struct Node{Node* parentNode* firstChild // 孩

【人搜网的笔试题】跟树有关的
一棵树的节点定义格式如下:
 struct Node{
  Node* parent;
  Node* firstChild; // 孩子节点
  Node* sibling; // 兄弟节点 
}
要求非递归遍历该树。
求具体的思路。
原文出自http://blog.csdn.net/v_july_v/article/details/7974418第四题。

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

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

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

if(pNode->sibling != NULL)
{
将 pNode->sibling 放入链表中
}
}
}
[解决办法]
不让递归那就用栈吧
[解决办法]
一棵树的节点定义格式如下:
 struct Node{
Node* parent;
Node* firstChild; // 孩子节点
Node* sibling; // 兄弟节点 
}
要求非递归遍历该树。
思路:采用队列存储,来遍历节点。

思路在题下面都有了么不是...

热点排行