#include<bits/stdc++.h>
using namespace std;
struct TreeNode
{
int val;
vector<TreeNode *> children;
TreeNode(int v):val(v){}
};
map<TreeNode *,TreeNode *>m;
void getFather(TreeNode *root)
{
deque<TreeNode *>q1,q2;
q1.push_back(root);
m[root]=NULL;
while(!q1.empty()){
while(!q1.empty()){
TreeNode *front=q1.front();
q1.pop_front();
for(auto it=(front->children).begin();it!=(front->children).end();it++){
q2.push_back(*it);
m[*it]=front;
}
}
q1.swap(q2);
}
}
int main()
{
TreeNode *root=new TreeNode(1);
TreeNode *left=new TreeNode(2);
TreeNode *right=new TreeNode(3);
root->children.push_back(left);
root->children.push_back(right);
getFather(root);
for(auto p:m)
cout<<p.first<<p.second<<endl;
}
树 层次 遍历 双队列
最新推荐文章于 2022-07-22 13:42:46 发布