理论基础
需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义
文章讲解:代码随想录
递归遍历
题目链接/文章讲解/视频讲解:代码随想录
前序遍历:
给你二叉树的根节点 root
,返回它节点值的 前序 遍历。
示例 1:
输入:root = [1,null,2,3] 输出:[1,2,3]
示例 2:
输入:root = [] 输出:[]
示例 3:
输入:root = [1] 输出:[1]
class Solution {
public:
void traversal(TreeNode* cur,vector<int>&vec){
if(cur==NULL) return;
vec.push_back(cur->val);
traversal(cur->left,vec);
traversal(cur->right,vec);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int>result;
traversal(root,result);
return result;
}
};
中序遍历:
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3] 输出:[1,3,2]
class Solution {
public:
void traversal(TreeNode* cur,vector<int>& vec){
if(cur==NULL)return;
traversal(cur->left,vec);
vec.push_back(cur->val);
traversal(cur->right,vec);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int>result;
traversal(root,result);
return result;
}
};
后序遍历:
class Solution {
public:
void traversal(TreeNode* cur,vector<int>& vec){
if(cur==NULL)return;
traversal(cur->left,vec);
traversal(cur->right,vec);
vec.push_back(cur->val);
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int>result;
traversal(root,result);
return result;
}
};
迭代遍历
题目链接/文章讲解/视频讲解:代码随想录
统一迭代
题目链接/文章讲解:代码随想录
层序遍历
题目链接/文章讲解/视频讲解:代码随想录