重点:
(1)二叉树的遍历方式:先中后序遍历(DFS),层次遍历(BFS);
(2)DFS:递归(调用)和迭代(栈);
(3)BFS:递归(调用)和迭代(队列);
难度简单1510
给定一个二叉树的根节点 root
,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3] 输出:[1,3,2]
示例 2:
输入:root = [] 输出:[]
示例 3:
输入:root = [1] 输出:[1]
提示:
- 树中节点数目在范围
[0, 100]
内 -100 <= Node.val <= 100
解析:
二叉树的遍历,比较简单。用两种方式实现:递归和迭代。
代码:
class Solution {
private:
vector<int> res;
public:
vector<int> inorderTraversal(TreeNode* root) {
Traversal(root);
return res;
}
void Traversal(TreeNode* root){
if(root==nullptr)
return;
Traversal(root->left);
res.push_back(root->val);
Traversal(root->right);
}
};
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> stk;
while(root!=nullptr||!stk.empty()){
while(root!=nullptr){
stk.push(root);
root=root->left;
}
root=stk.top();
stk.pop();
res.push_back(root->val);
root=root->right;
}
return res;
}
};