希赛考试网
首页 > 软考 > 软件设计师

二叉树的遍历数据结构代码

希赛网 2024-01-29 13:18:39

二叉树是一种重要的数据结构,它可以帮助我们在计算机科学中解决许多问题。在二叉树中,每个节点都有两个子节点,我们可以通过不同的方式遍历这些节点。这篇文章将从多个角度介绍二叉树的遍历数据结构代码。

一、先序遍历

先序遍历是二叉树中最简单的一种遍历方式。在先序遍历中,我们首先访问根节点,然后递归遍历左子树和右子树。以下是先序遍历的代码示例:

```

void preOrderTraversal(TreeNode* root) {

if (root == nullptr) {

return;

}

cout << root->val << endl;

preOrderTraversal(root->left);

preOrderTraversal(root->right);

}

```

二、中序遍历

中序遍历是另一种常用的遍历方式,在中序遍历中,我们首先递归遍历左子树,然后访问根节点,最后递归遍历右子树。以下是中序遍历的代码示例:

```

void inOrderTraversal(TreeNode* root) {

if (root == nullptr) {

return;

}

inOrderTraversal(root->left);

cout << root->val << endl;

inOrderTraversal(root->right);

}

```

三、后序遍历

后序遍历也是一个重要的遍历方式,在后序遍历中,我们首先递归遍历左子树和右子树,然后访问根节点。以下是后序遍历的代码示例:

```

void postOrderTraversal(TreeNode* root) {

if (root == nullptr) {

return;

}

postOrderTraversal(root->left);

postOrderTraversal(root->right);

cout << root->val << endl;

}

```

四、层次遍历

层次遍历是一种广泛使用的遍历方式,它可以逐层遍历树的节点。在层次遍历中,我们使用队列来存储节点,逐层遍历每个节点的左子树和右子树。以下是层次遍历的代码示例:

```

void levelOrderTraversal(TreeNode* root) {

if (root == nullptr) {

return;

}

queue nodeQueue;

nodeQueue.push(root);

while (!nodeQueue.empty()) {

TreeNode* node = nodeQueue.front();

nodeQueue.pop();

cout << node->val << endl;

if (node->left != nullptr) {

nodeQueue.push(node->left);

}

if (node->right != nullptr) {

nodeQueue.push(node->right);

}

}

}

```

微信扫一扫,领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考报考咨询

微信扫一扫,定制学习计划