leetcode 116. Populating Next Right Pointers in Each Node

1728 단어 LeetCode
Given a binary tree
    struct TreeLinkNode {
      TreeLinkNode *left;
      TreeLinkNode *right;
      TreeLinkNode *next;
    }

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to  NULL .
Initially, all next pointers are set to  NULL .
Note:
You may only use constant extra space.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example, Given the following perfect binary tree,
         1
       /  \
      2    3
     / \  / \
    4  5  6  7

After calling your function, the tree should look like:
         1 -> NULL
       /  \
      2 -> 3 -> NULL
     / \  / \
    4->5->6->7 -> NULL
class Solution {
public:
	void connect(TreeLinkNode *root) {
		if (root == NULL)
			return;
		vector<TreeLinkNode*>quene;
		root->next = NULL;
		quene.push_back(root);
		while (!quene.empty())
		{
			vector<TreeLinkNode*>newquene;
			for (int i = 0; i < quene.size(); i++)
			{
				if (quene[i]->left != NULL)
				{
					if (!newquene.empty())
						newquene.back()->next = quene[i]->left;
					newquene.push_back(quene[i]->left);
				}
				if (quene[i]->right != NULL)
				{
					if (!newquene.empty())
						newquene.back()->next = quene[i]->right;
					newquene.push_back(quene[i]->right);
				}
			}
			if (!newquene.empty())
				newquene.back()->next = NULL;
			quene = newquene;
		}
	}
};

어, 사실 constant space는 안 썼지만 accepted

좋은 웹페이지 즐겨찾기