leetcode102. 두 갈래 나무의 층계가 두루 다니다

7542 단어 Leetcode 트리
두 갈래 나무를 드리겠습니다. 층순으로 훑어보는 노드 값을 되돌려 주십시오.(즉, 왼쪽에서 오른쪽으로 모든 노드에 층층이 접근한다.)
예: 두 갈래 나무: [3,9,20,null,null,15,7]
	    3
	   /  \
      	  9   20
      	 /  \
        15   7

그 차원 반복 결과:
[ [3], [9,20], [15,7] ]
사고방식: 대기열로 이 문제를 실현할 수 있다. 각 층의 노드가 대기열에 저장된 다음에 노드 값을 얻은 후에 이 노드가 좌우 하위 노드가 있는지 판단하고 있으면 저장한다. 저장한 후에 이 노드를 삭제해야 한다. 하나의 순환으로 이 층의 노드가 반복적으로 완성되는지 제어해야 각 층의 노드가 모두 얻을 수 있다.
/** 
* Definition for a binary tree node. 
* * struct TreeNode { 
* *     int val; 
* *     TreeNode *left;
* *     TreeNode *right; 
* *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 
* * }; 
* */
* class Solution {
* public:    
* 	vector<vector<int>> levelOrder(TreeNode* root) {        
* 	vector<vector<int>> vecRes;        
* 	if(root == NULL)            
* 		return vecRes;        
* 	queue<TreeNode *> que;        
* 	que.push(root);        
* 	while(!que.empty())        
* 	{            
* 		vector<int> vecTemp;            
* 	  	int nSize = que.size();            
* 		for(int i=0;i<nSize;i++)            
* 		{                
* 			TreeNode * pNode = que.front();
*                 	vecTemp.push_back(pNode->val);                
* 			if(pNode->left != NULL)                
* 			{                    
* 				que.push(pNode->left);                    
* 			}                
* 			if(pNode->right != NULL)                
* 			{                    
* 				que.push(pNode->right);                
* 			}                
* 			que.pop();            
* 		}            
* 		vecRes.push_back(vecTemp);        
* 	}
        return vecRes;

    	}
    };

좋은 웹페이지 즐겨찾기