【发布时间】:2013-11-25 11:09:07
【问题描述】:
最近我在互联网上看到一个问题,想知道是否有比我所做的更有效的解决方案。
队列:将每个叶子节点的右指针更改为二叉树中的下一个叶子节点。
叶子可能不在同一水平。
二叉树节点的形式为:
struct node
{
struct node *left , *right ;
int key;
};
我在树上使用 LEVEL ORDER TAVERSAL(BFS) 解决了这个问题,最后得到了队列中的所有叶节点。
现在连接节点很容易:
while(queue is not empty)
{
currentnode = queue.pop();
currentnode->right= queue.top();
}
currentnode->right= NULL;// queue becomes empty on taking out last node
我使用 O(n) 时间,但额外的空间 O(n)。 可以不占用更少空间或不占用空间吗?
【问题讨论】:
标签: algorithm binary-tree nodes tree-traversal