题目描述:
给定一个数组,根据其中的元素层次建立一颗二叉树,并通过任意一种遍历方式将建好的树数据打印输出。
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;
}
二叉树构建与遍历
本文介绍了一种根据数组元素层次构建二叉树的方法,并实现了前序、中序及后序遍历来输出树的数据。通过使用队列辅助存储节点,确保了层次构建的准确性。
1890

被折叠的 条评论
为什么被折叠?



