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