LeetCode Solutions:Binary Tree Inorder Traversal

来源:互联网 发布:大数据修炼系统 夜杀 编辑:程序博客网 时间:2024/05/15 07:29

Given a binary tree, return the inorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},
   1
    \
     2
    /
   3
return [1,3,2].


Note: Recursive solution is trivial, could you do it iteratively?


Java Solutions:

1.Recursively——356 ms

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public ArrayList<Integer> inorderTraversal(TreeNode root) {ArrayList<Integer> results=new ArrayList<Integer>();        return inorderTraversal(root,results);    }private ArrayList<Integer> inorderTraversal(TreeNode root,ArrayList results){if(root==null)return results;inorderTraversal(root.left,results);results.add(root.val);inorderTraversal(root.right,results);return results;}}
2.Non-Recursively——380 ms

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public ArrayList<Integer> inorderTraversal(TreeNode root) {ArrayList<Integer> results=new ArrayList<Integer>();if(root==null)return results;Stack<TreeNode> stack=new Stack<TreeNode>();TreeNode p=root;while(p!=null||!stack.empty()){if(p!=null){stack.push(p);p=p.left;}else{p=stack.pop();results.add(p.val);p=p.right;}}        return results;    }}


0 0
原创粉丝点击