二叉树中序遍历
二叉树中序遍历
方法一
栈
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
         Stack<TreeNode> stack = new Stack<>();
         List<Integer> res = new ArrayList<>();
         TreeNode cur = root;
         while(cur!=null || !stack.isEmpty()){
             if(cur != null){
                 stack.push(cur);
                 cur = cur.left;
            }else{
                cur = stack.pop();
                res.add(cur.val);
                cur = cur.right;
            }
         }
         return res;
    }
}
方法二
递归
class Solution {
    List<Integer> res = new ArrayList<>();
    public List<Integer> inorderTraversal(TreeNode root) {
        dfs(root);
        return res;
    }
    private void dfs(TreeNode node){
        if(node == null)return; 
        dfs(node.left);
        res.add(node.val);
        dfs(node.right);
    }
}

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号