【力扣每日一题】力扣94二叉树的中序遍历

题目来源

力扣94二叉树的中序遍历

题目概述

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

思路分析

就是简单的树的中序遍历,使用递归和迭代的方式都可以实现。

代码实现

java实现

java使用迭代方式实现

public class Solution {
    public List inorderTraversal(TreeNode root) {
        List res = new ArrayList<>();
        Stack stack = new Stack<>();
        while (root != null || !stack.isEmpty()) {
            // 左孩子入栈,等待方法
           while (root != null) {
               stack.push(root);
               root = root.left;
           }
           // 出栈被访问
           root = stack.pop();
           res.add(root.val);
           // 如果有右孩子,再访问右孩子
           root = root.right;
        }
        return res;
    }
}

c++实现

c++使用递归方式实现

class Solution {
public:

    vector res = vector();
    vector inorderTraversal(TreeNode* root) {
        if (root == nullptr) {
            return res;
        }
        inorderTraversal(root->left);
        res.push_back(root->val);
        inorderTraversal(root->right);
        return res;
    }
}

你可能感兴趣的:(leetcode,算法,java,c++)