c********p 发帖数: 1969 | 1 求一个好理解的递归的方法。
已经知道queue的方法了。递归怎么求阿?因为中间有空的,所以。。。 |
c********p 发帖数: 1969 | |
r*****e 发帖数: 792 | 3 hint, handle right child first.
and recurse for right first too.
【在 c********p 的大作中提到】 : 求一个好理解的递归的方法。 : 已经知道queue的方法了。递归怎么求阿?因为中间有空的,所以。。。
|
c********p 发帖数: 1969 | 4 有没有sample code阿。。。
谢谢咯!
【在 r*****e 的大作中提到】 : hint, handle right child first. : and recurse for right first too.
|
r*****e 发帖数: 792 | 5 void connect(TreeLinkNode *root){
if (!root) return;
TreeLinkNode *next = root->next;
while (next) {
if (next->left) {
next = next->left;
break;
}
if (next->right) {
next = next->right;
break;
}
next = next->next;
}
//connect right first and then left
if (root->right) root->right->next = next;
if (root->left) root->left->next = root->right? root->right:next;
//when recurse, do right first and then left
connect(root->right);
connect(root->left);
}
【在 c********p 的大作中提到】 : 求一个好理解的递归的方法。 : 已经知道queue的方法了。递归怎么求阿?因为中间有空的,所以。。。
|
c********p 发帖数: 1969 | 6 谢谢咯,我捧回去读读。。
【在 r*****e 的大作中提到】 : void connect(TreeLinkNode *root){ : if (!root) return; : TreeLinkNode *next = root->next; : while (next) { : if (next->left) { : next = next->left; : break; : } : if (next->right) { : next = next->right;
|
l*****s 发帖数: 774 | 7 iterative
class Solution {
public:
void connect(TreeLinkNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
TreeLinkNode *curr = root;
while(curr)
{
TreeLinkNode *left_most = NULL;
TreeLinkNode *prev = NULL;
while(curr)
{
if(!left_most) left_most = curr->left?curr->
left:curr->right;
if(curr->left)
{
if(prev) prev->next = curr->left;
prev = curr->left;
}
if(curr->right)
{
if(prev) prev->next = curr->right;
prev = curr->right;
}
curr = curr->next;
}
curr = left_most;
}
}
};
【在 c********p 的大作中提到】 : 求一个好理解的递归的方法。 : 已经知道queue的方法了。递归怎么求阿?因为中间有空的,所以。。。
|
c********p 发帖数: 1969 | 8 谢谢!
【在 l*****s 的大作中提到】 : iterative : class Solution { : public: : void connect(TreeLinkNode *root) { : // Start typing your C/C++ solution below : // DO NOT write int main() function : TreeLinkNode *curr = root; : while(curr) : { : TreeLinkNode *left_most = NULL;
|