本文最后更新于:2022年9月6日 晚上
                
              
            
            
              给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
提示:
- 树中节点数目在范围 
[0, 100] 内 
-100 <= Node.val <= 100 
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
Solution
参考 @z1m 、[144 二叉树的前序遍历]、[145 二叉树的后序遍历]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
   | 
 
 
 
 
 
 
 
 
 
 
  class Solution { public:     vector<int> inorderTraversal(TreeNode* root) {         vector<int> res;         inorder(root, res);         return res;     } private:     void inorder(TreeNode* root, vector<int>& res){         if(root){             inorder(root->left, res);             res.push_back(root->val);             inorder(root->right, res);         }     } };
 
 
  | 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | class Solution { public:     vector<int> inorderTraversal(TreeNode* root) {         vector<int> res;         stack<TreeNode*> stack;         TreeNode* node = root;         while(node!=nullptr || !stack.empty()){             while(node){                 stack.push(node);                 node = node->left;             }             node = stack.top();             stack.pop();             res.push_back(node->val);             node = node->right;         }         return res;     } };
 
  | 
 
java
 | class Solution {     public List<Integer> inorderTraversal(TreeNode root) {         List<Integer> result = new ArrayList<>();         inorder(root, result);         return result;     }
      private void inorder(TreeNode root, List<Integer> rec) {         if (root != null) {             inorder(root.left, rec);             rec.add(root.val);             inorder(root.right, rec);         }     } }
 
  | 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | class Solution {     public List<Integer> inorderTraversal(TreeNode root) {         List<Integer> result = new ArrayList<>();         Deque<TreeNode> stack = new LinkedList<>();         TreeNode node = root;         while (node != null || !stack.isEmpty()) {             while (node != null) {                 stack.push(node);                 node = node.left;             }             node = stack.pop();             result.add(node.val);             node = node.right;         }         return result;     } }
 
  |