[LeetCode]Populating Next Right Pointers in Each Node

来源:互联网 发布:维启网络 编辑:程序博客网 时间:2024/06/04 06:18
解题思路:
宽度搜索。
1,增加一个queue记录height;
2,从queue出来的node,如果与前一个node的height一样,则让前一个node->next = curnode;
3,每次循环,都更新preNode 和preHeight;


/** * 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) {        queue<TreeLinkNode* > qNodes;        queue<int>            qHeight;        qNodes.push(root);        qHeight.push(0);        TreeLinkNode* preNode = NULL;        int preHeight = -1;        while(!qNodes.empty()){            TreeLinkNode* curNode = qNodes.front(); qNodes.pop();            int curHeight = qHeight.front(); qHeight.pop();            if (curNode != NULL){                if (curHeight == preHeight){                    preNode->next = curNode;                }                preNode = curNode;                preHeight = curHeight;                qNodes.push(curNode->left);                qHeight.push(curHeight + 1);                qNodes.push(curNode->right);                qHeight.push(curHeight + 1);            }        }    }};


0 0
原创粉丝点击