Binary Tree Inorder Traversal

来源:互联网 发布:红旗linux官网 编辑:程序博客网 时间:2024/06/06 04:03

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?

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

思路: iterative, 利用stack 来存储左边节点, 直到到达最左最下 开始访问, 访问完就向右边走,否则取栈顶元素

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<Integer> inorderTraversal(TreeNode root) {        List<Integer> ret = new ArrayList<Integer>();        if(root == null)            return ret;        Stack<TreeNode> s = new Stack<TreeNode>();        TreeNode cur = root;        while(cur != null || !s.isEmpty()){            while(cur != null){                s.push(cur);                cur = cur.left;            }            cur = s.pop();            ret.add(cur.val);            cur = cur.right;        }        return ret;    }}


0 0
原创粉丝点击