引言
二叉树是计算机科学中最基本且重要的数据结构之一,在算法设计、数据存储和处理中扮演着至关重要的角色。本文将全面深入地探讨二叉树的各个方面,包括其定义、实现、遍历算法以及典型应用场景。
基本概念
二叉树的定义
二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。
二叉树的基本结构
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {
}
};
二叉树的遍历方式
1. 前序遍历(先序遍历)
递归实现
void preorderTraversal(TreeNode* root) {
if (root == nullptr) return;
// 根节点操作
cout << root->val << " ";
// 递归遍历左子树
preorderTraversal(root->left);
// 递归遍历右子树
preorderTraversal(root->right);
}
迭代实现
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
if (!root) return result;
stack<TreeNode*> st;
st.push(root);
while (!st.empty()) {
TreeNode* node = st