LeetCode_Populating Next Right Pointers in Each Node II

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

  

复制代码
/**
 * Definition for binary tree with next pointer.
 * struct TreeLinkNode {
 *  int val;
 *  TreeLinkNode *left, *right, *next;
 *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
 * };
 */
class Solution {
public:
    void connect(TreeLinkNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        while(root){
            TreeLinkNode *head = NULL;
            TreeLinkNode *pre  = NULL;
            for(;root;root = root->next){
                if(!head) head = root->left ? root->left : root->right;
                
                if(root->left){
                    if(pre)pre->next = root->left;
                    pre = root->left;
                }
                
                if(root->right){
                    if(pre) pre->next = root->right;
                    pre = root->right;
                }
            }// end of for    
            root = head;
        } // end of while 
    }
};
复制代码

 

posted @   冰点猎手  阅读(197)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训
点击右上角即可分享
微信分享提示