标签:leetcode
基于循环的方法:
void connect(TreeLinkNode *root) { if (root == NULL) return; TreeLinkNode * start = root; TreeLinkNode * end = root; TreeLinkNode * levelEnd = root; while (start != NULL) { if (start->left != NULL) { end->next = start->left; end = end->next; } if (start->right != NULL) { end->next = start->right; end = end->next; } if (start == levelEnd) { start = start->next; levelEnd->next = NULL; levelEnd = end; } else { start = start->next; } } }
void connect(TreeLinkNode *curQueue) { if (!curQueue) return; TreeLinkNode* nextQueue = new TreeLinkNode(-1);//dummy node TreeLinkNode* head = nextQueue; while (curQueue) { if (curQueue->left) { nextQueue->next = curQueue->left; nextQueue = nextQueue->next; } if (curQueue->right) { nextQueue->next = curQueue->right; nextQueue = nextQueue->next; } curQueue = curQueue->next; } nextQueue = head; head = head->next; delete nextQueue; connect(head); }
Populating Next Right Pointers in Each Node II [leetcode] 空间O(1)的基于循环和基于递归的两种方法
标签:leetcode
原文地址:http://blog.csdn.net/peerlessbloom/article/details/39579977