二叉树的遍历(C++实现)
二叉树:节点的度最大为2的树
共四种遍历方式:前序遍历、中序遍历、后序遍历、层次遍历
前序遍历:根节点->左子树->右子树
中序遍历:左子树->根节点->右子树
后序遍历:左子树->右子树->根节点
层次遍历:由根节点出发逐层遍历
前序、中序、后序可使用递归和迭代两种方法
层次遍历使用广度优先搜索
二叉树节点数据结构如下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {
}
};
前序遍历
递归法:
class Solution {
public:
vector<int> res;
vector<int> preorderTraversal(TreeNode* root) {
if(root==NULL) return res;
res.push_back(root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
return res;
}
};
迭代法:
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
if(root