2022-12-6
找了半天,发现没有答案,只有少部分的java版,这里用C++来实现一下吧
#include<bits/stdc++.h>
using namespace std;
typedef struct BiTNode{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
//递归遍历(Recursive Solution)
void traverse(BiTree T, int level, vector<vector<int> > &res) {
if (!T) return;
if (res.size() == level) res.push_back({});
res[level].push_back(T->data);
if (T->lchild) traverse(T->lchild, level + 1, res);
if (T->rchild) traverse(T->rchild, level + 1, res);
}
vector<vector<int> > levelOrder(BiTree T) {
vector<vector<int> > res;
traverse(T, 0, res);
return res;
}
int main() {
BiTree T = new BiTNode;
T->data = 1;
T->lchild = new BiTNode;
T->lchild->data = 2;
T->lchild->lchild = NULL;
T->lchild->rchild = NULL;
T->rchild = new BiTNode;
T->rchild->data = 3;
T->rchild->lchild = NULL;
T->rchild->rchild = NULL;
vector<vector<int> > res = levelOrder(T);
for (int i = 0; i<res.size(); i++) {
for (int j = 0; j<res[i].size(); j++) {
cout << res[i][j] << ' ';
}
cout << endl;
}
return 0;
}