二叉树是一种重要的数据结构,它可以帮助我们在计算机科学中解决许多问题。在二叉树中,每个节点都有两个子节点,我们可以通过不同的方式遍历这些节点。这篇文章将从多个角度介绍二叉树的遍历数据结构代码。
一、先序遍历
先序遍历是二叉树中最简单的一种遍历方式。在先序遍历中,我们首先访问根节点,然后递归遍历左子树和右子树。以下是先序遍历的代码示例:
```
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.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);
}
}
}
```
微信扫一扫,领取最新备考资料