Given a binary tree
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to
NULL
.
Initially, all next pointers are set to NULL
.
Note:
For example,
Given the following perfect binary tree,
1
/ 2 3
/ \ / 4 5 6 7
After calling your function, the tree should look like:
1 -> NULL
/ 2 -> 3 -> NULL
/ \ / 4->5->6->7 -> NULL
用队列保存需要链接的同层节点。
void connect(TreeLinkNode *root) { if(root == NULL) return; queue<TreeLinkNode*> _queue; _queue.push(root); TreeLinkNode head(0); TreeLinkNode* pre = &head; queue<TreeLinkNode*> second; while(!_queue.empty()) { TreeLinkNode* tmp = _queue.front(); _queue.pop(); if(tmp->left != NULL) second.push(tmp->left); if(tmp->right != NULL) second.push(tmp->right); if(_queue.empty()) { pre->next = tmp; tmp->next = NULL; pre = &head; while(!second.empty()) { _queue.push(second.front()); second.pop(); } } else { pre->next = tmp; pre = tmp; } } // return root; }
[leetcode]Populating Next Right Pointers in Each Node
原文地址:http://blog.csdn.net/chenlei0630/article/details/41687069