读书人

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

发布时间: 2012-09-28 00:03:35 作者: rapoo

【人搜网的笔试题】跟树有关的
一棵树的节点定义格式如下:
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; // 兄弟节点
}
要求非递归遍历该树。
思路:采用队列存储,来遍历节点。

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

读书人网 >C语言

热点推荐