【LeetCode】94. Binary Tree Inorder Traversal 解题报告


转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51477967


Subject

出处:https://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].

Explain

该题目的意思就是中序遍历二叉树,保存结点值到list集合中返回。


Solution

递归方式 + 非递归方式

solution 1

递归方式

    public List list = new ArrayList();

    /**
     * 递归方式 
* 1ms * * @param root * @return */
public List inorderTraversal(TreeNode root) { inOrder(root); return list; } /** * 递归方式 * * @param node */ public void inOrder(TreeNode node) { if (node == null) { return; } if (node.left != null) { inOrder(node.left); } list.add(node.val); if (node.right != null) { inOrder(node.right); } }

LeetCode平台 Run Time 是 1ms


solution 2

非递归方式

    /**
     * 非递归方式
* 2ms * * @param root * @return */
public List<Integer> inorderTraversal2(TreeNode root) { if (root == null) { return list; } Stack<TreeNode> stack = new Stack<>(); TreeNode tempNode = root; stack.push(tempNode); while (!stack.isEmpty()) { while ((tempNode = stack.peek()) != null) { tempNode = tempNode.left; stack.push(tempNode); } // stack.pop(); // if (!stack.isEmpty()) { tempNode = stack.pop(); list.add(tempNode.val); stack.push(tempNode.right); } } return list; }

LeetCode平台 Run Time 是 2ms


so easy~~

你可能感兴趣的:(Java开发,算法学习,LeetCode解题报告,Java,篇)