94. Binary Tree Inorder Traversal
/////// recursive class Solution { List<Integer> result = new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { if(root == null){ return result; } inorderTraversal(root.left); result.add(root.val); inorderTraversal(root.right); return result; } }
/////// recursion with global var class Solution { List<Integer> result = new ArrayList<>(); // has to be here so theres only one result , the result here is global variable public List<Integer> inorderTraversal(TreeNode root) { if(root == null) return result; if(root.left != null) inorderTraversal(root.left); result.add(root.val); if(root.right != null) inorderTraversal(root.right); return result; } } ///////. recursion without global var, with a helper function class Solution { public List < Integer > inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); if(root == null) return result; helper(root, result); return result; } private void helper(TreeNode root, List<Integer> result){ if(root.left != null) helper(root.left, result); result.add(root.val); if(root.right != null) helper(root.right, result); } } /// class Solution { public List < Integer > inorderTraversal(TreeNode root) { List < Integer > res = new ArrayList < > (); helper(root, res); return res; } public void helper(TreeNode root, List < Integer > res) { if (root != null) { if (root.left != null) { helper(root.left, res); } res.add(root.val); if (root.right != null) { helper(root.right, res); } } } }
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); pushLeft(root, stack); while(!stack.isEmpty()){ TreeNode cur = stack.pop(); result.add(cur.val); if(cur.right != null){ pushLeft(cur.right, stack); } } return result; } private void pushLeft(TreeNode node, Stack<TreeNode> stack){ while(node != null){ /// use while , not if stack.push(node); node = node.left; } } }
class Solution{ public List<Integer> inorderTraversal(TreeNode root){ List<Integer> result = new ArrayList<>(); if(root == null){ return result; } helper(root, result); return result; } private void helper(TreeNode root, List<Integer> result){ if(root.left != null){ helper(root.left, result); } result.add(root.val); if(root.right != null){ helper(root.right, result); // don't forget to pass result as one param } } }
Given a binary tree, return the inorder traversal of its nodes' values.
Example:
Input: [1,null,2,3]
1
\
2
/
3
Output: [1,3,2]
Follow up: Recursive solution is trivial, could you do it iteratively?
posted on 2018-07-19 12:23 猪猪🐷 阅读(103) 评论(0) 收藏 举报
浙公网安备 33010602011771号