二叉树的遍历

先序遍历

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;
}

posted @   某朝  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示