该二叉树结点结构:
struct TreeNode{
TreeNode* m_pLeft;
TreeNode* m_pRight;
TreeNode* m_pSibling;
int m_nValue;
}
层序遍历主要是利用队列。
Connect函数的代码如下:
TreeNode* Connect(TreeNode* root)
{
if(root==NULL)
return NULL;
std::deque< TreeNode*>queueNode;
std::deque< TreeNode*>iterator iter;
queueNode.push_back(root);
while(!queueNode.empty())
{
for(iter=queueNode.begin;iter!=queueNode.end-1;iter++)
{
(*iter)->m_pSibling=*(iter+1);
}
(*iter)->m_pSibling=NULL;
for(iter=queueNode.begin;iter!=queueNode.end;iter++)
{
queueNode.push_back((*iter)->m_pLeft);
queueNode.push_back((*iter)->m_pRight);
queueNode.pop_front();
}
}
return root;
}