用一个vector<int>来存储每一层的值,使用vector<TreeNode*> node_next来存储下一层的节点。遍历当前节点以提取val的值,并且判断是否有子节点,如果有子节点则将其加入到node_next中,以node_next不断更新当前的node最终提取所有的节点,类似于链表遍历</int>
while(p_node)
{
p_node=p_node->next;
}参考代码:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int> > rst;
if(root == NULL)
return rst;
vector<TreeNode*> node_stack;
node_stack.push_back(root);
while(node_stack.size())
{
vector<int> value;
vector<TreeNode*> node_next;
//遍历当前层的节点;
for(auto& node: node_stack)
{
//提取值;
value.push_back(node->val);
//如果有左孩子则将左孩子加入到下一层;
if(node->left)
node_next.push_back(node->left);
//如果有右孩子则将右孩子加入到下一层;
if(node->right)
node_next.push_back(node->right);
}
//更新结果;
rst.push_back(value);
//更新到下一层;
node_stack = node_next;
}
return rst;
}
};
京公网安备 11010502036488号