123456789101112131415161718192021
给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例:输入:root = [1,null,2,3]输出:[1,3,2]输入:root = []输出:[]输入:root = [1]输出:[1]输入:root = [1,2]输出:[2,1]输入:root = [1,null,2]输出:[1,2]提示:1. 树中节点数目在范围 [0, 100] 内2. -100 <= Node.val <= 100
123456789101112131415161718192021222324252627
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */class Solution {public: vector<int> res; //容器要定义在外面 vector<int> inorderTraversal(TreeNode *root) { if (root == nullptr) return {}; inorderTraversal(root->left); res.push_back(root->val); inorderTraversal(root->right); return res; }};
1234567891011121314151617181920212223242526272829303132333435363738
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> ret; //定义一个容器 stack<TreeNode* > s; //定义一个栈 TreeNode* cur = root; while (cur != NULL || !s.empty()) { if (cur != NULL) { s.push(cur); cur = cur->left; } else { cur = s.top(); s.pop(); ret.push_back(cur->val); cur = cur->right; } } return ret; }};