博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Populating Next Right Pointers in Each Node II
阅读量:6161 次
发布时间:2019-06-21

本文共 1853 字,大约阅读时间需要 6 分钟。

Follow up for problem "Populating Next Right Pointers in Each Node".

What if the given tree could be any binary tree? Would your previous solution still work?

Note:

  • You may only use constant extra space.

 

For example,

Given the following binary tree,

1       /  \      2    3     / \    \    4   5    7

 

After calling your function, the tree should look like:

1 -> NULL       /  \      2 -> 3 -> NULL     / \    \    4-> 5 -> 7 -> NULL 思路: 对于root,如果存在左右节点则,左节点的next是右节点。如果只存在之一的话,那么那么的next节点是root的next中最左边的节点。注意,因为子节点要用到父节点的next信息,所以先遍历右节点后遍历左节点。 代码:
 
1     void connect(TreeLinkNode *root) { 2         // IMPORTANT: Please reset any member data you declared, as 3         // the same Solution instance will be reused for each test case. 4         if(root){ 5             if(root->left){ 6                 if(root->right){ 7                     root->left->next = root->right; 8                 } 9                 else{10                     TreeLinkNode *tmp = root->next;11                     while(tmp && !root->left->next){12                         if(tmp->left)13                             root->left->next = tmp->left;14                         else15                             root->left->next = tmp->right;16                         tmp = tmp->next;17                     }18                 }19             }20             if(root->right){21                 TreeLinkNode *tmp = root->next;22                 while(tmp && !root->right->next){23                     if(tmp->left)24                         root->right->next = tmp->left;25                     else26                         root->right->next = tmp->right;27                     tmp = tmp->next;28                 }29             }30             connect(root->right);31             connect(root->left);32         }33     }
 

 

 

转载于:https://www.cnblogs.com/waruzhi/p/3411240.html

你可能感兴趣的文章
Runtime类
查看>>
eclipse decompiler
查看>>
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>