zoukankan      html  css  js  c++  java
  • leetcode第一刷_Populating Next Right Pointers in Each Node II

    很自然的推广,假设去掉全然二叉树的条件呢?由于这个条件不是关键,因此不会影响整体的思路。做法依旧是每次找到一层的起点,然后一层一层的走。

    假设是全然二叉树的话,每层的起点就是上一层起点的左孩子,兄弟之间的链接也简单,直接找相应父亲的左右孩子就可以。

    一般二叉树时,起点应该是上一层第一个有孩子节点的左孩子,或者没有左孩子时。是他的右孩子。

    为了能在孩子层中不断链接,我们必须保存当孩子层的前一个节点,当当前层找到一个节点有孩子,就接到这个pre节点后面,然后更新pre节点的指向。

    class Solution {
    public:
        void connect(TreeLinkNode *root) {
            if(root == NULL)    return;
            TreeLinkNode *beginNode = root, *leftNode, *pre;
            while(beginNode){
                leftNode = beginNode;
                pre = NULL;
                beginNode = NULL;
                while(leftNode){
                    if(leftNode->left&&leftNode->right){
                        leftNode->left->next = leftNode->right;
                        if(pre)    pre->next = leftNode->left;
                        if(!beginNode)  beginNode = leftNode->left;
                        pre = leftNode->right;
                    }else if(leftNode->left){
                        if(pre)    pre->next = leftNode->left;
                        if(!beginNode)  beginNode = leftNode->left;
                        pre = leftNode->left;
                    }else if(leftNode->right){
                        if(pre)    pre->next = leftNode->right;
                        if(!beginNode)  beginNode = leftNode->right;
                        pre = leftNode->right;
                    }
                    leftNode = leftNode->next;
                }
            }
        }
    };


  • 相关阅读:
    5-4 链表的天然递归结构性质
    java8 Optional 解析
    [leetcode] Unique Binary Search Trees
    [leetcode] Anagrams
    [leetcode] Valid Number
    构造素数表2
    构造素数表1
    整型所占字节
    习题7-8 字符串转换成十进制整数
    习题7-7 字符串替换
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7039540.html
Copyright © 2011-2022 走看看