二叉树的遍历
先序遍历
using namespace std;
// 定义二叉树节点结构体
struct TreeNode {
char Data; // 节点的数据
TreeNode* left; // 左子节点
TreeNode* right; // 右子节点
// 构造函数
TreeNode(char data, TreeNode* leftChild = nullptr, TreeNode* rightChild = nullptr)
: Data(data), left(leftChild), right(rightChild) {}
};
// 预定义的二叉树节点类型
typedef TreeNode* BiTree;
// 前序遍历
void PreOrder(BiTree BT) {
if (BT) {
cout << BT->Data; // 打印节点的数据
PreOrder(BT->left); // 递归遍历左子树
PreOrder(BT->right); // 递归遍历右子树
}
}
//中序遍历
void InOrder(BiTree BT)
{
if (BT)
{
InOrder(BT->left);
cout << BT->Data;
InOrder(BT->right);
}
}
//后序遍历
void PostOrder(BiTree BT)
{
if (BT) {
PostOrder(BT->left);
PostOrder(BT->right);
cout << BT->Data;
}
}
// 主函数
int main() {
// 创建一个示例二叉树
TreeNode* root = new TreeNode('A',
new TreeNode('B', new TreeNode('D'), new TreeNode('E',new TreeNode('H'),nullptr)),
new TreeNode('C', new TreeNode('F',nullptr,new TreeNode('I')),new TreeNode('G')));
// 前序遍历
PreOrder(root);
cout << endl;
// 释放内存
// 请注意:在实际应用中,应该释放所有分配的内存,这里为了简化代码没有进行内存释放
return 0;
}