LeetCode 94. Binary Tree Inorder Traversal

来源:互联网 发布:vb控制plc 编辑:程序博客网 时间:2024/05/14 09:27

Given a binary tree, return the inorder traversal of its nodes' values.

Note: Recursive solution is trivial, could you do it iteratively?

二叉树的中序遍历的非递归算法,用栈可以实现,好像以前算法课的书上有这个算法,不过已经忘记差不多了...查阅后实现代码如下:

/**
 * 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> list = new ArrayList<>();
        if (root == null)
            return list;
        Stack<TreeNode> s = new Stack<TreeNode>();
        TreeNode p = root;
        while (p != null || !s.empty()){
            while (p != null){
                s.add(p);
                p = p.left;
            }
            p = s.pop();
            list.add(p.val);
            p = p.right;
            
        }
        return list;
    }
}

只不过效率很不好2333,看评论区还有其他实现方法都很精巧,也算学习了奋斗

0 0
原创粉丝点击