1. 程式人生 > >Leetcode 116. 填充同一層的兄弟節點 C++

Leetcode 116. 填充同一層的兄弟節點 C++

題目描述

在這裡插入圖片描述

思路

本題是一個很典型的題,採用的方法就是樹的層序歷遍。通過一個佇列控制,每次迴圈處理一層的節點,下一次處理下一層的節點。關於樹的層序歷遍可以參看另外兩個題,可以有更深的認識。二叉樹的層次遍歷二叉樹的鋸齒形層次遍歷.

解答

/**
 * 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) { if(!root) return; queue<TreeLinkNode*> q; q.push(root); while(!q.empty()) { auto size = q.size(); TreeLinkNode* temp = q.front(); q.pop(); while
(size--) { if(temp->left) q.push(temp->left); if(temp->right) q.push(temp->right); if(0 == size) temp->next=NULL; else { TreeLinkNode* cur = q.front(); q.
pop(); temp->next = cur; temp=cur; } } } } };