二叉树的遍历

先序遍历

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 @ 2024-09-02 10:16  某朝  阅读(42)  评论(0)    收藏  举报