zoukankan      html  css  js  c++  java
  • leetcode116 Populating Next Right Pointers in Each Node

    题意:给一个完全二叉树:

         1
       /  
      2    3
     /   / 
    4  5  6  7

    让左子树的next指针指向右子树,右子树的next继续指向右边,变成了这样:

        1 -> NULL
       /  
      2 -> 3 -> NULL
     /   / 
    4->5->6->7 -> NULL

    思路:唉,英语不行真是醉了,半天没弄明白题意,最后没办法了去找了别人的博客看才明白要干啥。这题的特殊点在于树是完全二叉树,对于其中的一个节点p来说,p->left->next = p->right;p->right->next = p->next->left;明白了这两点这题就解决了,可以用递归,即对root进行这样的操作再对root->left和root->right再做一遍;也可以迭代,附上两种方法的代码。

    此题不错,应该多注意一下。

    代码1  递归:

    void connect(TreeLinkNode *root)
    {
        if(root == NULL)
            return;
        if(root->next && root->right)
            root->right->next = root->next->left;
        if(root->left)
            root->left->next = root->right;
        connect(root->left);
        connect(root->right);
    }

    代码2 迭代:

    void connect(TreeLinkNode *root)
    {
        TreeLinkNode *pre = root;
        TreeLinkNode *cur = NULL;
        while(pre)
        {
            cur = pre;
            while(cur && cur->left)
            {
                cur->left->next = cur->right;
                if(cur->next)
                    cur->right->next = cur->next->left;
                cur = cur->next;
            }
            pre = pre->left;
        }
    }
  • 相关阅读:
    Jmeter在命令行运行技巧
    Tomcat6 一些调优设置内存和连接数
    用例结构优化心得
    LoadRunner 调用dll方法
    DLL接口自动化测试总结
    Loadrunner进行md5加密方法
    Loadrunner检查点使用总结
    网络上可供测试的Web Service
    04 json,xml混合封装通信
    03 xml封装通信接口
  • 原文地址:https://www.cnblogs.com/puyangsky/p/4643949.html
Copyright © 2011-2022 走看看