https://oj.leetcode.com/problems/binary-tree-inorder-traversal/
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 do it iteratively?
Problem Solving Ideas:
Recursive
/*** Definition for Binary tree * public class TreeNode {* Int. val; * TreeNode left; * TreeNode right; * TreeNode (int x) {val = x;} }*/ Public classSolution { PublicList<integer>inordertraversal (TreeNode root) {List List=NewArraylist<integer>(); if(Root = =NULL){ returnlist; } list.addall (Inordertraversal (root.left)); List.add (Root.val); List.addall (Inordertraversal (root.right)); returnlist; }}
Non-recursive method
/*** Definition for Binary tree * public class TreeNode {* Int. val; * TreeNode left; * TreeNode right; * TreeNode (int x) {val = x;} }*/ Public classSolution { PublicList<integer>inordertraversal (TreeNode root) {List<Integer> list =NewArraylist<integer> (); Stack<TreeNode> stack =NewStack<treenode> (); while(!stack.empty () | | \ root! =NULL){ while(Root! =NULL) {Stack.push (root); Root=Root.left; } if(!Stack.empty ()) {Root=Stack.pop (); List.add (Root.val); Root=Root.right; } } returnlist; }}
Binary Tree inorder Traversal