#include <iostream>
#include<bits/stdc++.h>
using namespace std;
struct TreeNode{
TreeNode *left;
TreeNode * right;
int val;
TreeNode(int x):val(x),left(NULL),right(NULL) {}
//TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
vector<vector<int>> levelOrder(TreeNode* root) {
if(!root) return {};
vector<vector<int>> res;
queue<TreeNode *> que;
que.push(root);
while(!que.empty())
{
int cnt=que.size();
vector<int> level;
while(cnt)
{
TreeNode* node=que.front();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
level.push_back(node->val);
que.pop();
cnt--;
}
res.push_back(level);
}
return res;
}
int main()
{
vector<vector<int>> res;
TreeNode* node1=new TreeNode(3);
TreeNode* node2=new TreeNode(9);
TreeNode* node3=new TreeNode(20);
TreeNode* node4=new TreeNode(15);
TreeNode* node5=new TreeNode(7);
node1->left=node2;
node1->right=node3;
node3->left=node4;
node3->right=node5;
res=levelOrder(node1);
vector<vector<int>> res2={{15,7},{9,20},{3}};
reverse(res2.begin(),res2.end());
if(res==res2)
{
cout<<"true"<<endl;
}
return 0;
}
二叉树的层次遍历(BFS)从最后一层开始输出
最新推荐文章于 2022-11-14 17:10:35 发布