C++层次遍历思想
第一步:将根节点放入队列
第二步:每次从队列中弹出一个节点,记为node
第三步:看这个node有没有左孩子,如果有左孩子就把左孩子放到队列中,如果node有右孩子就把右孩子放到队列中。
第四步:重复步骤二和步骤三,直到队列为空
C++层次遍历代码
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int val,TreeNode *left,TreeNode *right):val(val),left(left),right(right){};
}
void layerOrder(TreeNode* root)
{
if(root==nullptr) return;
queue<TreeNode* >que;
while(!que.empty())
{
TreeNode* node=que.front();
que.pop();
cout<<node->val<<" ";
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
}