a***e 发帖数: 413 | 1 这道题和1我都是觉得iterative的比recursive的好写,看别人答案也更容易懂,(压
根儿没写出通过的recursion来)。下面这个都不知道思路是怎么地,特别是怎么能
connect(dummy.next);就保证 dummy.next 就是下一层的第一个了呢?见笑哈。
如果明天还看不出来就去VS里面调调。。。。。。
void connect(TreeLinkNode *root) {
if (root==NULL) return;
TreeLinkNode dummy(-1);
for (TreeLinkNode *cur = root, *prev=&dummy; cur; cur = cur->next)
{
if (cur->left!=NULL){
prev->next = cur->left;
prev = prev->next;
}
if (cur->right!=NULL){
prev->next = cur->right;
prev = prev->next;
}
}
connect(dummy.next);
} |
w*******s 发帖数: 138 | 2 tail recursion跟循环差不多,利用之前build的linked list一层一层往下走
【在 a***e 的大作中提到】 : 这道题和1我都是觉得iterative的比recursive的好写,看别人答案也更容易懂,(压 : 根儿没写出通过的recursion来)。下面这个都不知道思路是怎么地,特别是怎么能 : connect(dummy.next);就保证 dummy.next 就是下一层的第一个了呢?见笑哈。 : 如果明天还看不出来就去VS里面调调。。。。。。 : void connect(TreeLinkNode *root) { : if (root==NULL) return; : : TreeLinkNode dummy(-1); : for (TreeLinkNode *cur = root, *prev=&dummy; cur; cur = cur->next) : {
|
a***e 发帖数: 413 | 3 多谢楼上!
Sigh,recursion经常弄得我头大。我们专业也写程序,但从来不涉及那个。工作中也从
不用。
听学CS的人说多练就知道了。 |
f******o 发帖数: 1505 | 4 你拿一张纸画个 tree 出来,3层就够了,跟着 code 走一遍到 left most leaf, 就明
白了
【在 a***e 的大作中提到】 : 多谢楼上! : Sigh,recursion经常弄得我头大。我们专业也写程序,但从来不涉及那个。工作中也从 : 不用。 : 听学CS的人说多练就知道了。
|