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?
The main idea: the middle sequence traversal of a binary tree, the recursive scheme is too low, with an iterative way to write?
Problem-solving ideas: Do not have recursion, then the implementation of their own stack Bai
1, first node into the stack, processing the current node left child, and pressed into the stack, when the left node non-empty, loop traversal;
2, find the first left child is empty node, the node out of the stack, the node value added to the result list, and the current node is set to the right child;
3, loop to the stack is empty.
1 PublicList<integer>inordertraversal (TreeNode root) {2list<integer> res =NewArraylist<>();3stack<treenode> stack =NewStack<>();4TreeNode Curr =Root;5 while(Curr! =NULL|| !Stack.isempty ()) {6 while(Curr! =NULL) {7 Stack.add (curr);8Curr =Curr.left;9 }TenCurr =Stack.pop (); One Res.add (curr.val); ACurr =Curr.right; - } - returnRes; the}
Binary Tree inorder Traversal--leetcode