您的位置:首页 > 其它

leetcode--Binary Tree Inorder Traversal

2017-08-08 11:31 232 查看
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?

题意:中序遍历儿二叉树

分类:二叉树

解法1:递归

[java] view
plain copy

/** 

 * Definition for a binary tree node. 

 * 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> res = new ArrayList<Integer>();  

        helper(root,res);  

        return res;  

    }  

      

    void helper(TreeNode p,List<Integer> res){  

        if(p==null) return;  

        if(p.left!=null){  

            helper(p.left, res);  

        }  

        res.add(p.val);  

        if(p.right!=null){  

            helper(p.right, res);  

        }  

    }  

}  

解法2:非递归

[java] view
plain copy

/** 

 * Definition for a binary tree node. 

 * public class TreeNode { 

 *     int val; 

 *     TreeNode left; 

 *     TreeNode right; 

 *     TreeNode(int x) { val = x; } 

 * } 

 */  

public class Solution {  

    public List<Integer> inorderTraversal(TreeNode root) {  

        Stack<TreeNode> stack = new Stack<TreeNode>();  

        List<Integer> res = new ArrayList<Integer>();  

        TreeNode cur = root;  

        while(stack.size()>0||cur!=null){  

            while(cur!=null){  

                stack.add(cur);  

                cur = cur.left;  

            }  

            if(stack.size()>0){  

                TreeNode p = stack.pop();  

                res.add(p.val);  

                cur = p.right;  

            }  

        }  

        return res;  

    }  

}  

原文链接http://blog.csdn.net/crazy__chen/article/details/46445383
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐