题目描述:
给定一个数组,根据其中的元素层次建立一颗二叉树,并通过任意一种遍历方式将建好的树数据打印输出。
typedef struct TreeNode
{
struct TreeNode* pleft = nullptr;
struct TreeNode* pright = nullptr;
int data;
}TNode, * pTNode;
class Solution
{
public:
void levelbuildTree()
{
for (auto& ele : vec)
{
pTNode ptr = new TNode();
ptr->data = ele;
ptr->pleft = nullptr;
ptr->pright = nullptr;
que.push(ptr);
auto queCur = que.front();
if (pstr == nullptr)
{
pstr = ptr;
continue;
}
if ((queCur)->pleft == nullptr)
{
(queCur)->pleft = ptr;
}
else if ((queCur)->pright == nullptr)
{
(queCur)->pright = ptr;
que.pop();
}
}
}
void preOrder(pTNode ptr)
{
if (ptr != nullptr)
{
cout << ptr->data << " ";
preOrder(ptr->pleft);
preOrder(ptr->pright);
}
}
void midOrder(pTNode ptr)
{
if (ptr != nullptr)
{
midOrder(ptr->pleft);
cout << ptr->data << " ";
midOrder(ptr->pright);
}
}
void latOrder(pTNode ptr)
{
if (ptr != nullptr)
{
latOrder(ptr->pleft);
latOrder(ptr->pright);
cout << ptr->data << " ";
}
}
private:
vector<int> vec = { 1,2,3,4,5,6,7,8,9 };
queue<pTNode> que;
pTNode pstr = nullptr;
}