二叉树的遍历
先序遍历
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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话